| ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq(t) ⊒w bq0(t) ∧ FOFollowsW(t, bq(t), pq(l), l) → FOFollowsW(t, bq0(t), pq0(l), l) |
FOFollowsW(t, bq(t), pq(l), l), rely(t, pq, bq, pq0, bq0), bq(t) ⊒w bq0(t), ¬ FOFollowsW(t, bq0(t), pq0(l), l) ⊦
| FOFollowsW(t, bq(t), pq(l), l), rely(t, pq, bq, pq0, bq0), bq(t) ⊒w bq0(t), ¬ FOFollowsW(t, bq0(t), pq0(l), l) ⊦ |
FOFollowsW(t, bq(t), pq(l), l), ¬ FOFollowsW(t, bq0(t), pq0(l), l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0) ⊦
Used simplifier rules: B-postfix-weak: ⊦ bel0 ⊒w bel1 ↔ (∀ l. bel0 |SF l ⊒ bel1 |SF l); B-restrict-SF-l: ⊦ bel |SF l = bel.filter(λ be. be = SF ∨ be.l = l); rely-def: ⊦ rely(t, pq, bq, pq0, bq0) ↔ (∀ l. rely(t, l, pq(l), bq(t), pq0(l), bq0(t))); rely-local-def: ⊦ rely(t, l, fowl, bel, fowl0, bel0) ↔ (fowl | t) + bel.FOWs(t, l) ⊒ (fowl0 | t) + bel0.FOWs(t, l);
| FOFollowsW(t, bq(t), pq(l), l), ¬ FOFollowsW(t, bq0(t), pq0(l), l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0) ⊦ |
⊦ FOFollowsW(t, bel, fowl, l) ↔ (∀ fowl0, fowl1, v. fowl = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bel) ∧ (∀ bel0, bel1, v. bel = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1)
FOFollowsW(t, bq(t), pq(l), l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), (∃ fowl0, fowl1, v. ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t))) ∨ (∃ bel0, bel1, v. ¬(bq0(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1)) ⊦
Used terms: t, bq0(t), pq0(l), l
| ⊦ FOFollowsW(t, bel, fowl, l) ↔ (∀ fowl0, fowl1, v. fowl = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bel) ∧ (∀ bel0, bel1, v. bel = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1) |
| FOFollowsW(t, bq(t), pq(l), l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), (∃ fowl0, fowl1, v. ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t))) ∨ (∃ bel0, bel1, v. ¬(bq0(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1)) ⊦ |
FOFollowsW(t, bq(t), pq(l), l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
| FOFollowsW(t, bq(t), pq(l), l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
⊦ FOFollowsW(t, bel, fowl, l) ↔ (∀ fowl0, fowl1, v. fowl = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bel) ∧ (∀ bel0, bel1, v. bel = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1)
∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used terms: t, bq(t), pq(l), l
| ⊦ FOFollowsW(t, bel, fowl, l) ↔ (∀ fowl0, fowl1, v. fowl = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bel) ∧ (∀ bel0, bel1, v. bel = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1) |
| ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
⊦ bel ⊒w bel0 → bel.FOWs(t, l) ⊒ bel0.FOWs(t, l)
bq(t) ⊒w bq0(t) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used terms: bq(t), bq0(t), t, l
| ⊦ bel ⊒w bel0 → bel.FOWs(t, l) ⊒ bel0.FOWs(t, l) |
| bq(t) ⊒w bq0(t) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used simplifier rules: B-postfix-weak: ⊦ bel0 ⊒w bel1 ↔ (∀ l. bel0 |SF l ⊒ bel1 |SF l); B-restrict-SF-l: ⊦ bel |SF l = bel.filter(λ be. be = SF ∨ be.l = l);
| bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used terms: l0
| bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) → bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
| bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. (pq(l0) | t) + bq(t).FOWs(t, l0) ⊒ (pq0(l0) | t) + bq0(t).FOWs(t, l0), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used terms: l
| bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), (pq(l) | t) + bq(t).FOWs(t, l) ⊒ (pq0(l) | t) + bq0(t).FOWs(t, l), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
Used terms: (pq(l) | t) + bq(t).FOWs(t, l), (pq0(l) | t) + bq0(t).FOWs(t, l)
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
| bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ¬(pq0(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq0(t)) ∨ ¬(bq0(t) = bel0 + W(l, v0) ' + bel1 → FO(l) ∈ bel1) ⊦ |
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 + W(v, t) ' + fowl1 | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + (fowl0 + W(v, t) ' + fowl1 | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(v, tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s)
| fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l) ⊦
Used terms: bq(t).FOWs(t, l), bq0(t).FOWs(t, l)
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
| fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l) ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ # fowl + #(fowl0 | t) < #(pq(l) | t), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used formulas: # fowl + #(fowl0 | t) < #(pq(l) | t)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 | t) + W(v, t) ' + (fowl1 | t) = (pq(l) | t) + fowl2, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # y = # y0 → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws)
| fowl + (fowl0 | t) + W(v, t) ' + (fowl1 | t) = (pq(l) | t) + fowl2, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), #(fowl + (fowl0 | t)) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y. pq(l) | t = (fowl + (fowl0 | t)) + y ∧ W(v, t) ' + (fowl1 | t) = y + fowl2 ⊦
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: fowl + (fowl0 | t), W(v, t) ' + (fowl1 | t), pq(l) | t, fowl2
| ⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), #(fowl + (fowl0 | t)) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y. pq(l) | t = (fowl + (fowl0 | t)) + y ∧ W(v, t) ' + (fowl1 | t) = y + fowl2 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), W(v, t) ' + (fowl1 | t) = fowl3 + fowl2, pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t = (fowl + (fowl0 | t)) + fowl3, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, W(v, t) ∈ fowl3 ∨ W(v, t) ∈ fowl2 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ #(x + y) = # x + # y; (s)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), W(v, t) ' + (fowl1 | t) = fowl3 + fowl2, pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t = (fowl + (fowl0 | t)) + fowl3, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, W(v, t) ∈ fowl3 ∨ W(v, t) ∈ fowl2 ⊦ |
W(v, t) ' + (fowl1 | t) = fowl3 + fowl2, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl3 = fow + fowl4, pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t = (fowl + (fowl0 | t)) + fowl3, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), W(v, t) ∈ fowl3 ∨ W(v, t) ∈ fowl2 ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ x + [] = x; (s) ⊦ [] + x = x; (s) ⊦ ¬ a ∈ []; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| W(v, t) ' + (fowl1 | t) = fowl3 + fowl2, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl3 = fow + fowl4, pq0(l) = fowl0 + W(v, t) ' + fowl1, pq(l) | t = (fowl + (fowl0 | t)) + fowl3, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), W(v, t) ∈ fowl3 ∨ W(v, t) ∈ fowl2 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = fowl4 + fowl2, pq(l) | t = fowl + (fowl0 | t) + W(v, t) ' + fowl4, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = fowl4 + fowl2, pq(l) | t = fowl + (fowl0 | t) + W(v, t) ' + fowl4, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t)
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = fowl4 + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ fowl2, fowl3. pq(l) = fowl2 + W(v, t) ' + fowl3 ∧ fowl + (fowl0 | t) = fowl2 | t ∧ W(v, t).tid = t ∧ fowl4 = fowl3 | t ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: pq(l), fowl + (fowl0 | t), W(v, t), t, fowl4
| ⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t) |
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = fowl4 + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ fowl2, fowl3. pq(l) = fowl2 + W(v, t) ' + fowl3 ∧ fowl + (fowl0 | t) = fowl2 | t ∧ W(v, t).tid = t ∧ fowl4 = fowl3 | t ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: ⊦ W(v, tid).tid = tid; (s)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, pq(l) = fowl3 + W(v, t) ' + fowl5 → FO(t) ∈ fowl5 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used terms: fowl3, fowl5, v
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, pq(l) = fowl3 + W(v, t) ' + fowl5 → FO(t) ∈ fowl5 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), FO(t) ∈ fowl5 ∨ FO(l) ∈ bq(t) ⊦
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), FO(t) ∈ fowl5 ∨ FO(l) ∈ bq(t) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl5, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(l) ∈ bq(t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl5, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y, z. fowl5 = y + (FO(t) + z) ⊦
Used terms: FO(t), fowl5
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y, z. fowl5 = y + (FO(t) + z) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl4 + FO(t) ' + fowl6, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = ((fowl4 | t) + FO(t) ' + (fowl6 | t)) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ FO(tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s)
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl4 + FO(t) ' + fowl6, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = ((fowl4 | t) + FO(t) ' + (fowl6 | t)) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t)
Used simplifier rules: ⊦ FO(tid).tid = tid; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl1, fowl4 | t, FO(t), t, (fowl6 | t) + fowl2
| ⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t) |
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(l) ∈ bq(t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(l) ∈ bq(t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(l) ∈ bq(t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y, z. bq(t) = y + (FO(l) + z) ⊦
Used terms: FO(l), bq(t)
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y, z. bq(t) = y + (FO(l) + z) ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = (bel + FO(l) ' + bel0).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = (bel + FO(l) ' + bel0).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l)
fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + (FO(l) ' + bel0).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: t, l, bel, FO(l) ' + bel0
| ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l) |
| fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + (FO(l) ' + bel0).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l0. (bel + FO(l) ' + bel0).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: FOWs-FO: ⊦ (FO(l0) ' + bel).FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]) + bel.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ FO(l).l = l; (s) ⊦ FO(l) ≠ SF; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s)
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ # bel.FOWs(t, l) < # fowl2, ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used formulas: # bel.FOWs(t, l) < # fowl2
| fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, fowl2 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, fowl2 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, fowl2 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∃ y. fowl2 = bel.FOWs(t, l) + y ∧ FO(t) ' + bel0.FOWs(t, l) = y + bq0(t).FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl2, bq0(t).FOWs(t, l), bel.FOWs(t, l), FO(t) ' + bel0.FOWs(t, l)
| ⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, fowl2 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # bel.FOWs(t, l) < # fowl2, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∃ y. fowl2 = bel.FOWs(t, l) + y ∧ FO(t) ' + bel0.FOWs(t, l) = y + bq0(t).FOWs(t, l) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, FO(t) ' + bel0.FOWs(t, l) = fowl4 + bq0(t).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + fowl4, fowl4 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl4, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: FO-in-FOWs: ⊦ FO(t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ FO(l) ∈ bel; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) 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 ⊦ # x = 0 ↔ x = []; (s) ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ #(x + y) = # x + # y; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s)
| fowl + (fowl0 | t) = fowl3 | t, FO(t) ' + bel0.FOWs(t, l) = fowl4 + bq0(t).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + fowl4, fowl4 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl4, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦ |
FO(t) ' + bel0.FOWs(t, l) = fowl4 + bq0(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, fowl4 = fow + fowl2, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + fowl4, fowl4 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl4, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| FO(t) ' + bel0.FOWs(t, l) = fowl4 + bq0(t).FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, fowl4 = fow + fowl2, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + fowl4, fowl4 ≠ [], pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), FO(t) ∈ fowl4, bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl + (fowl0 | t) = fowl3 | t, bel0.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + FO(t) ' + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| fowl + (fowl0 | t) = fowl3 | t, bel0.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + bel.FOWs(t, l) + FO(t) ' + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t)
Used simplifier rules: ⊦ FO(tid).tid = tid; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl1, (fowl5 | t) + bel.FOWs(t, l), FO(t), t, fowl2
| ⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t) |
| fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ # bel.FOWs(t, l) < # fowl2, ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| fowl + (fowl0 | t) = fowl3 | t, fowl2 + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y. bel.FOWs(t, l) = fowl2 + y ∧ bq0(t).FOWs(t, l) = y + FO(t) ' + bel0.FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl2, bq0(t).FOWs(t, l), bel.FOWs(t, l), FO(t) ' + bel0.FOWs(t, l)
| ⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl + (fowl0 | t) = fowl3 | t, bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ y. bel.FOWs(t, l) = fowl2 + y ∧ bq0(t).FOWs(t, l) = y + FO(t) ' + bel0.FOWs(t, l) ⊦ |
fowl + (fowl0 | t) = fowl3 | t, bel.FOWs(t, l) = fowl2 + fowl4, bq0(t).FOWs(t, l) = fowl4 + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦
| fowl + (fowl0 | t) = fowl3 | t, bel.FOWs(t, l) = fowl2 + fowl4, bq0(t).FOWs(t, l) = fowl4 + FO(t) ' + bel0.FOWs(t, l), bq(t) = bel + FO(l) ' + bel0, pq(l) = fowl3 + W(v, t) ' + fowl5, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = (fowl5 | t) + fowl2, pq(l) | t ≠ [], # fowl + #(fowl0 | t) < #(pq(l) | t), # fowl2 ≤ # bel.FOWs(t, l), bel.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ FO(l0) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ l1. bel.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ FO(l1) ';[]) + bel0.filter(λ be. be = SF ∨ be.l = l1) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ bel.FOWs(t, l) = fowl0 + FO(t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + FO(l) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l))
Used simplifier rules: ⊦ ¬ a ∈ x → x ≠ y + a ' + z; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l, bq0(t), fowl4, t, bel0.FOWs(t, l)
| ⊦ bel.FOWs(t, l) = fowl0 + FO(t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + FO(l) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) |
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + ((fowl0 | t) + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = (pq(l) | t) + fowl2 + bq0(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ # fowl + #(fowl0 | t) < #(pq(l) | t), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) + W(v, t) ' + (fowl1 | t) = (pq(l) | t) + fowl2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # y = # y0 → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws)
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), fowl + (fowl0 | t) + W(v, t) ' + (fowl1 | t) = (pq(l) | t) + fowl2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(pq(l) | t) ≤ #(fowl + (fowl0 | t)), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. fowl + (fowl0 | t) = (pq(l) | t) + y ∧ fowl2 = y + W(v, t) ' + (fowl1 | t) ⊦
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: fowl + (fowl0 | t), W(v, t) ' + (fowl1 | t), pq(l) | t, fowl2
| ⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl2 + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(pq(l) | t) ≤ #(fowl + (fowl0 | t)), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. fowl + (fowl0 | t) = (pq(l) | t) + y ∧ fowl2 = y + W(v, t) ' + (fowl1 | t) ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + fowl3, (fowl3 + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s)
| fowl + (fowl0 | t) = (pq(l) | t) + fowl3, (fowl3 + W(v, t) ' + (fowl1 | t)) + bq0(t).FOWs(t, l) = bq(t).FOWs(t, l), pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
⊦ bel.FOWs(t, l) = fowl0 + W(v, t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + W(l, v) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l))
fowl + (fowl0 | t) = (pq(l) | t) + fowl3, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ bel0, bel1. bq(t) = bel0 + W(l, v) ' + bel1 ∧ fowl3 = bel0.FOWs(t, l) ∧ (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, l, bq(t), fowl3, t, (fowl1 | t) + bq0(t).FOWs(t, l)
| ⊦ bel.FOWs(t, l) = fowl0 + W(v, t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + W(l, v) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) |
| fowl + (fowl0 | t) = (pq(l) | t) + fowl3, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ bel0, bel1. bq(t) = bel0 + W(l, v) ' + bel1 ∧ fowl3 = bel0.FOWs(t, l) ∧ (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l) ⊦ |
(fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used terms: bel0, bel1, v
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
(fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, FO(l) ∈ bel1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t) ⊦
| (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, FO(l) ∈ bel1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t) ⊦ |
⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z))
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y, z. bel1 = y + (FO(l) + z) ⊦
Used terms: FO(l), bel1
| ⊦ a ∈ x ↔ (∃ y, z. x = y + (a + z)) |
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel1.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel1, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y, z. bel1 = y + (FO(l) + z) ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: FOWs-append: ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l); FOWs-FO: ⊦ (FO(l0) ' + bel).FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]) + bel.FOWs(t, l); ⊦ x = y + a ' + z → a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s)
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), (fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
(fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(fowl1 | t) ≤ # bel.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
(fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ¬ #(fowl1 | t) ≤ # bel.FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used formulas: #(fowl1 | t) ≤ # bel.FOWs(t, l)
| (fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(fowl1 | t) ≤ # bel.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(fowl1 | t) ≤ # bel.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. bel.FOWs(t, l) = (fowl1 | t) + y ∧ bq0(t).FOWs(t, l) = y + FO(t) ' + bel2.FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl1 | t, bq0(t).FOWs(t, l), bel.FOWs(t, l), FO(t) ' + bel2.FOWs(t, l)
| ⊦ # x ≤ # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), #(fowl1 | t) ≤ # bel.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. bel.FOWs(t, l) = (fowl1 | t) + y ∧ bq0(t).FOWs(t, l) = y + FO(t) ' + bel2.FOWs(t, l) ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bel.FOWs(t, l) = (fowl1 | t) + fowl2, bq0(t).FOWs(t, l) = fowl2 + FO(t) ' + bel2.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(fowl1 | t) ≤ # bel.FOWs(t, l), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bel.FOWs(t, l) = (fowl1 | t) + fowl2, bq0(t).FOWs(t, l) = fowl2 + FO(t) ' + bel2.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(fowl1 | t) ≤ # bel.FOWs(t, l), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ bel.FOWs(t, l) = fowl0 + FO(t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + FO(l) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l))
Used simplifier rules: ⊦ ¬ a ∈ x → x ≠ y + a ' + z; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l, bq0(t), fowl2, t, bel2.FOWs(t, l)
| ⊦ bel.FOWs(t, l) = fowl0 + FO(t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + FO(l) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) |
| (fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ¬ #(fowl1 | t) ≤ # bel.FOWs(t, l), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
(fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| (fowl1 | t) + bq0(t).FOWs(t, l) = bel.FOWs(t, l) + FO(t) ' + bel2.FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2))
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. fowl1 | t = bel.FOWs(t, l) + y ∧ FO(t) ' + bel2.FOWs(t, l) = y + bq0(t).FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl1 | t, bq0(t).FOWs(t, l), bel.FOWs(t, l), FO(t) ' + bel2.FOWs(t, l)
| ⊦ # x < # x1 → (x + x0 = x1 + x2 ↔ (∃ y. x1 = x + y ∧ x0 = y + x2)) |
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ∃ y. fowl1 | t = bel.FOWs(t, l) + y ∧ FO(t) ' + bel2.FOWs(t, l) = y + bq0(t).FOWs(t, l) ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), FO(t) ' + bel2.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + fowl2, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), FO(t) ∈ fowl2, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: FO-in-FOWs: ⊦ FO(t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ FO(l) ∈ bel; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), FO(t) ' + bel2.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + fowl2, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), FO(t) ∈ fowl2, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
FO(t) ' + bel2.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, fowl2 = fow + fowl3, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + fowl2, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), FO(t) ∈ fowl2, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ x + [] = x; (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ¬ a ∈ []; (s)
| FO(t) ' + bel2.FOWs(t, l) = fowl2 + bq0(t).FOWs(t, l), fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, fowl2 = fow + fowl3, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + fowl2, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), FO(t) ∈ fowl2, #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ fowl1, ¬ FO(l) ∈ bq0(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bel2.FOWs(t, l) = fowl3 + bq0(t).FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + FO(t) ' + fowl3, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| fowl + (fowl0 | t) = (pq(l) | t) + bel0.FOWs(t, l), bel2.FOWs(t, l) = fowl3 + bq0(t).FOWs(t, l), bq(t) = bel0 + W(l, v) ' + bel + FO(l) ' + bel2, pq0(l) = fowl0 + W(v, t) ' + fowl1, fowl1 | t = bel.FOWs(t, l) + FO(t) ' + fowl3, fowl1 | t ≠ [], # bel.FOWs(t, l) < #(fowl1 | t), #(pq(l) | t) ≤ # fowl + #(fowl0 | t), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bq0(t), ¬ FO(t) ∈ fowl1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t)
Used simplifier rules: ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ FO(tid).tid = tid; (s) ⊦ #(x + y) = # x + # y; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: fowl1, bel.FOWs(t, l), FO(t), t, fowl3
| ⊦ fowl | t = fowl0 + fow ' + fowl1 ↔ (∃ fowl2, fowl3. fowl = fowl2 + fow ' + fowl3 ∧ fowl0 = fowl2 | t ∧ fow.tid = t ∧ fowl1 = fowl3 | t) |
| fowl + (pq0(l) | t) + bq0(t).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).FOWs(t, l) ⊒ bq0(t).FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bq0(t).filter(λ be. be = SF ∨ be.l = l0) ⊦ |
fowl + (pq0(l) | t) + (bel0 + W(l, v0) ' + bel1).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ (bel0 + W(l, v0) ' + bel1).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ (bel0 + W(l, v0) ' + bel1).FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ (bel0 + W(l, v0) ' + bel1).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + (pq0(l) | t) + (bel0 + W(l, v0) ' + bel1).FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ (bel0 + W(l, v0) ' + bel1).filter(λ be. be = SF ∨ be.l = l0), bq(t).FOWs(t, l) ⊒ (bel0 + W(l, v0) ' + bel1).FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ l0. bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ (bel0 + W(l, v0) ' + bel1).filter(λ be. be = SF ∨ be.l = l0), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).FOWs(t, l) ⊒ bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: FOWs-append: ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l); FOWs-W: ⊦ (W(l0, v) ' + bel).FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]) + bel.FOWs(t, l); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(l, v).l = l; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s)
| fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).FOWs(t, l) ⊒ bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l), bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l) ⊦
Used terms: bq(t).FOWs(t, l), bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l)
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
| fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ z. z + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l) ⊦ |
fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l), fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
| fowl + (pq0(l) | t) + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = (pq(l) | t) + fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l), fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # y = # y0 → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws)
| fowl0 + bel0.FOWs(t, l) + W(v0, t) ' + bel1.FOWs(t, l) = bq(t).FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
⊦ bel.FOWs(t, l) = fowl0 + W(v, t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + W(l, v) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l))
fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ bel2, bel3. bq(t) = bel2 + W(l, v0) ' + bel3 ∧ fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l) ∧ bel1.FOWs(t, l) = bel3.FOWs(t, l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v0, l, bq(t), fowl0 + bel0.FOWs(t, l), t, bel1.FOWs(t, l)
| ⊦ bel.FOWs(t, l) = fowl0 + W(v, t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + W(l, v) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) |
| fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∃ bel2, bel3. bq(t) = bel2 + W(l, v0) ' + bel3 ∧ fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l) ∧ bel1.FOWs(t, l) = bel3.FOWs(t, l) ⊦ |
fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, bq(t) = bel2 + W(l, v0) ' + bel3 → FO(l) ∈ bel3, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used terms: bel2, bel3, v0
| fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, bq(t) = bel2 + W(l, v0) ' + bel3 → FO(l) ∈ bel3, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ bel1.FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦
Used simplifier rules: FO-in-FOWs: ⊦ FO(t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ FO(l) ∈ bel; Used formulas: FO(t) ∈ bel1.FOWs(t, l)
| fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ bel1.FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1), ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1 ⊦ |
fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ bel3.FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦
| fowl0 + bel0.FOWs(t, l) = bel2.FOWs(t, l), fowl + (pq0(l) | t) = (pq(l) | t) + fowl0, bel1.FOWs(t, l) = bel3.FOWs(t, l), bq(t) = bel2 + W(l, v0) ' + bel3, bq0(t) = bel0 + W(l, v0) ' + bel1, FO(l) ∈ bel3, bq(t).filter(λ be. be = SF ∨ be.l = l0) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l0) + (l = l0 ⊃ W(l0, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l0), ¬ FO(t) ∈ bel3.FOWs(t, l), ¬ FO(l) ∈ bel1, ∀ bel0, bel1, v. bq(t) = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1, ∀ fowl0, fowl1, v. pq(l) = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bq(t), ∀ l1. bq(t).filter(λ be. be = SF ∨ be.l = l1) ⊒ bel0.filter(λ be. be = SF ∨ be.l = l1) + (l = l1 ⊃ W(l1, v0) ';[]) + bel1.filter(λ be. be = SF ∨ be.l = l1) ⊦ |
Used simplifier rules: FO-in-FOWs: ⊦ FO(t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ FO(l) ∈ bel;
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.