| finout(g) ⊦ ∃ s0. ∀ a. reach≤(g)(s, n)(a) ↔ a ∈ s0 |
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n)(a) ↔ a ∈ s0
Used simplifier rules: finout-def: ⊦ finout(g) ↔ (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s);
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n)(a) ↔ a ∈ s0 |
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ g, s. (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0) ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 +1)(a) ↔ a ∈ s0
Used simplifier rules: Nat freely generated by 0, +1;;
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0 |
finout(g) ⊦ ∃ s0. ∀ a. reach(g)(s, n)(a) ↔ a ∈ s0
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ s0. ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0
Used simplifier rules: finout-def: ⊦ finout(g) ↔ (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s); Used terms: g, s, 0
| finout(g) ⊦ ∃ s0. ∀ a. reach(g)(s, n)(a) ↔ a ∈ s0 |
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ s0. ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0 |
∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0
| ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0 |
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0
Used terms: s0
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ ∀ a. reach≤(g)(s, 0)(a) ↔ a ∈ s0 |
¬(reach≤(g)(s, 0)(a) ↔ a ∈ s0), ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦
| ¬(reach≤(g)(s, 0)(a) ↔ a ∈ s0), ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ |
⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b))
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ (∃ m. m ≤ 0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0
Used terms: a, 0, s, g
| ⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b)) |
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0 ⊦ (∃ m. m ≤ 0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 |
¬(reach(g)(s, 0)(a) ↔ a ∈ s0), ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦
Used simplifier rules: ⊦ m ≤ 0 ↔ m = 0; (s)
| ¬(reach(g)(s, 0)(a) ↔ a ∈ s0), ∀ a. reach(g)(s, 0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ |
Used terms: a
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ g, s. (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0) ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 +1)(a) ↔ a ∈ s0 |
∀ g, s. (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0), ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| ∀ g, s. (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0), ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 |
(∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0), ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0
Used terms: g, s
| (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s) → (∃ s0. ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0), ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 |
∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0
| ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 |
finout(g) ⊦ ∃ s0. ∀ a. reach(g)(s, n)(a) ↔ a ∈ s0
∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ s0. ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0
Used simplifier rules: finout-def: ⊦ finout(g) ↔ (∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s); Used terms: g, s, n0 + 1
| finout(g) ⊦ ∃ s0. ∀ a. reach(g)(s, n)(a) ↔ a ∈ s0 |
| ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ s0. ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 |
∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0
| ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦ ∃ s0. ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 |
∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1 ⊦ ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 ∪ s1
Used terms: s0 ∪ s1
| ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1 ⊦ ∀ a. reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 ∪ s1 |
¬(reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 ∨ a ∈ s1), ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦
Used simplifier rules: unc: ⊦ s ∪ s0 = s0 ∪ s; from specification set-union una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1; from specification set-union ⊦ a ∈ s1 ∪ s2 ↔ a ∈ s1 ∨ a ∈ s2; (s)
| ¬(reach≤(g)(s, n0 + 1)(a) ↔ a ∈ s0 ∨ a ∈ s1), ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0 ⊦ |
⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b))
∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1 ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1
Used terms: a, n0 + 1, s, g
| ⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b)) |
| ∀ a. reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1 ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1 |
reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1
Used terms: a
| reach≤(g)(s, n0)(a) ↔ a ∈ s0, ∀ a. reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1 |
reach≤(g)(s, n0)(a) ↔ a ∈ s0, reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1
Used terms: a
| reach≤(g)(s, n0)(a) ↔ a ∈ s0, reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1 |
⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b))
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1
Used terms: a, n0, s, g
| ⊦ reach≤(g)(s, n)(b) ↔ (∃ m. m ≤ n ∧ reach(g)(s, m)(b)) |
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ (∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0 ∨ a ∈ s1 |
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ¬ a ∈ s0, ¬ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) ⊦
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ¬ a ∈ s0, ¬ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) ⊦ |
reach(g)(s, m)(a), m ≤ n0 + 1, ¬ reach(g)(s, n0 + 1)(a), ¬ a ∈ s0, ¬ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)
| reach(g)(s, m)(a), m ≤ n0 + 1, ¬ reach(g)(s, n0 + 1)(a), ¬ a ∈ s0, ¬ a ∈ s1, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a) |
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: m
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) |
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, (∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)) ↔ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) |
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ¬ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a), ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a), a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, ¬ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a), ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a) |
# s1 ≠ 0, s1 ≠ ∅, reach(g)(s, n0 + 1)(a), a ∈ s1, ¬ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a), ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a)
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # s1 ≠ 0, s1 ≠ ∅, reach(g)(s, n0 + 1)(a), a ∈ s1, ¬ a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a), ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a) |
Used simplifier rules: ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n0 + 1
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, a ∈ s0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s, ∃ m. m ≤ n0 ∧ reach(g)(s, m)(a), a ∈ s0 ∨ a ∈ s1 ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) |
reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, # s0 ≠ 0, s0 ≠ ∅, reach(g)(s, m)(a), a ∈ s0, m ≤ n0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a)
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| reach(g)(s, n0 + 1)(a) ↔ a ∈ s1, # s0 ≠ 0, s0 ≠ ∅, reach(g)(s, m)(a), a ∈ s0, m ≤ n0, ∀ a. ∃ s. ∀ b. edge(g)(a, b) ↔ b ∈ s ⊦ ∃ m. m ≤ n0 + 1 ∧ reach(g)(s, m)(a) |
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n → n ≠ 0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: m
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.