| ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h) ⊦ ((aP0 ⊗_ s))(h) → ((aP ⊗_ s))(h) |
((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h) ⊦
| ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h) ⊦ |
((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h) ⊦
| ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h) ⊦ |
((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: # s
| ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
| ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
s ≠ ∅, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: Sep-emp: ⊦ aP ⊗_ ∅ = emp; ⊦ emp(h) ↔ h = ∅; (s) Used formulas: s = ∅
| s ≠ ∅, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
# s ≠ 0, s ≠ ∅, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: size-zero: ⊦ # s ≠ 0 → s ≠ ∅; (forward) from specification set-basic size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic
| # s ≠ 0, s ≠ ∅, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2)
# s ≠ 0, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∃ a. ¬(a ∈ s ↔ a ∈ ∅), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used terms: ∅, s
| ⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2) |
| # s ≠ 0, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∃ a. ¬(a ∈ s ↔ a ∈ ∅), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
# s ≠ 0, a ∈ s, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: ⊦ ¬ a ∈ ∅; (s)
| # s ≠ 0, a ∈ s, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0)
# s ≠ 0, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0, ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used terms: s, a
| ⊦ a ∈ s ↔ (∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0) |
| # s ≠ 0, ((aP0 ⊗_ s))(h), ¬ ((aP ⊗_ s))(h), ∀ a, h. a ∈ s ∧ aP0(a)(h) → aP(a)(h), ∃ s0. s = s0 ++ a ∧ ¬ a ∈ s0, ∀ s0, aP0, h, aP. # s0 < # s → ((aP0 ⊗_ s0))(h) ∧ ¬ ((aP ⊗_ s0))(h) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
((aP0(a) * aP0 ⊗_ s0))(h), ¬ ((aP(a) * aP ⊗_ s0))(h), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: Sep-ins: ⊦ ¬ a ∈ s → aP ⊗_ (s ++ a) = aP(a) * aP ⊗_ s; ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s) ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; (s)
| ((aP0(a) * aP0 ⊗_ s0))(h), ¬ ((aP(a) * aP ⊗_ s0))(h), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
¬ ((aP(a) * aP ⊗_ s0))(h), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ aP0(a)(h0) ∧ ((aP0 ⊗_ s0))(h1), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used terms: h, aP0 ⊗_ s0, aP0(a)
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| ¬ ((aP(a) * aP ⊗_ s0))(h), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ aP0(a)(h0) ∧ ((aP0 ⊗_ s0))(h1), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
| aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1)
aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1) ∧ h0 ⊥ h1
Used terms: h1, h0, aP ⊗_ s0, aP(a)
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1) |
| aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1) ∧ h0 ⊥ h1 |
aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1)
| aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1) |
aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, (a = a ∨ a ∈ s0) ∧ aP0(a)(h0) → aP(a)(h0), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1)
Used terms: a, h0
| aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, (a = a ∨ a ∈ s0) ∧ aP0(a)(h0) → aP(a)(h0), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ aP(a)(h0) ∧ ((aP ⊗_ s0))(h1) |
aP(a)(h0), aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
| aP(a)(h0), aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
aP(a)(h0), aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ ((aP0 ⊗_ s0))(h1) ∧ ¬ ((aP ⊗_ s0))(h1) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h))
Used simplifier rules: ⊦ ¬ a ∈ s → #(s ++ a) = # s + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: s0, aP0, h1, aP
| aP(a)(h0), aP0(a)(h0), ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ ((aP0 ⊗_ s0))(h1) ∧ ¬ ((aP ⊗_ s0))(h1) ∧ (∀ a, h. a ∈ s0 ∧ aP0(a)(h) → aP(a)(h)) |
# s0 ≠ 0, s0 ≠ ∅, aP(a)(h0), aP0(a0)(h), aP0(a)(h0), a0 ∈ s0, ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ aP(a0)(h), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # s0 ≠ 0, s0 ≠ ∅, aP(a)(h0), aP0(a0)(h), aP0(a)(h0), a0 ∈ s0, ((aP0 ⊗_ s0))(h1), h0 ⊥ h1, ¬ ((aP(a) * aP ⊗_ s0))(h0 ∪ h1), ¬ aP(a0)(h), ¬ a ∈ s0, ¬ ((aP ⊗_ s0))(h1), ∀ a0, h0. (a0 = a ∨ a0 ∈ s0) ∧ aP0(a0)(h0) → aP(a0)(h0), ∀ s1, aP0, h, aP. # s1 < #(s0 ++ a) → ((aP0 ⊗_ s1))(h) ∧ ¬ ((aP ⊗_ s1))(h) ∧ (∀ a, h. a ∈ s1 ∧ aP0(a)(h) → aP(a)(h)) → false ⊦ |
Used terms: a0, h
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.