| ⊦ fragω(IOAut(start, step, ext))(s ' + sf, a ' + af) ↔ step(s, a, sf(0)) ∧ fragω(IOAut(start, step, ext))(sf, af) |
¬(fragω(IOAut(start, step, ext))(s ' + sf, a ' + af) ↔ step(s, a, sf(0)) ∧ fragω(IOAut(start, step, ext))(sf, af)) ⊦
| ¬(fragω(IOAut(start, step, ext))(s ' + sf, a ' + af) ↔ step(s, a, sf(0)) ∧ fragω(IOAut(start, step, ext))(sf, af)) ⊦ |
⊦ fragω(ioa)(sf, af) ↔ (∀ n. ioa.step(sf(n), af(n), sf(n +1)))
⊦ (∀ n. IOAut(start, step, ext).step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n +1))) ↔ step(s, a, sf(0)) ∧ fragω(IOAut(start, step, ext))(sf, af)
Used terms: IOAut(start, step, ext), s ' + sf, a ' + af
| ⊦ fragω(ioa)(sf, af) ↔ (∀ n. ioa.step(sf(n), af(n), sf(n +1))) |
| ⊦ (∀ n. IOAut(start, step, ext).step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n +1))) ↔ step(s, a, sf(0)) ∧ fragω(IOAut(start, step, ext))(sf, af) |
⊦ fragω(ioa)(sf, af) ↔ (∀ n. ioa.step(sf(n), af(n), sf(n +1)))
⊦ (∀ n. IOAut(start, step, ext).step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n +1))) ↔ step(s, a, sf(0)) ∧ (∀ n. IOAut(start, step, ext).step(sf(n), af(n), sf(n +1)))
Used terms: IOAut(start, step, ext), sf, af
| ⊦ fragω(ioa)(sf, af) ↔ (∀ n. ioa.step(sf(n), af(n), sf(n +1))) |
| ⊦ (∀ n. IOAut(start, step, ext).step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n +1))) ↔ step(s, a, sf(0)) ∧ (∀ n. IOAut(start, step, ext).step(sf(n), af(n), sf(n +1))) |
⊦ (∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1))) ↔ step(s, a, sf(0)) ∧ (∀ n. step(sf(n), af(n), sf(n + 1)))
Used simplifier rules: ⊦ IOAut(start, step, ext).step = step; (s) ⊦ m +1 = m + 1; (s)
| ⊦ (∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1))) ↔ step(s, a, sf(0)) ∧ (∀ n. step(sf(n), af(n), sf(n + 1))) |
∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)) ⊦ step(s, a, sf(0)) ∧ (∀ n. step(sf(n), af(n), sf(n + 1)))
step(s, a, sf(0)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ ∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1))
| ∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)) ⊦ step(s, a, sf(0)) ∧ (∀ n. step(sf(n), af(n), sf(n + 1))) |
∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
| ∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
∀ n. step((λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n), ((a ' + af))(n), (λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n + 1)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
Used terms: s ', sf
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| ∀ n. step((λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n), ((a ' + af))(n), (λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n + 1)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), ((a ' + af))(n0), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), ((a ' + af))(n0), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (λ n. (n < # a ' ⊃ a '[n];af(n - # a ')))(n0), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
Used terms: a ', af
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (λ n. (n < # a ' ⊃ a '[n];af(n - # a ')))(n0), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
step((0 = 0 ⊃ s;sf(0 - 1)), (0 = 0 ⊃ a;af(0 - 1)), sf(0)), ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1))
Used terms: 0
| step((0 = 0 ⊃ s;sf(0 - 1)), (0 = 0 ⊃ a;af(0 - 1)), sf(0)), ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦ step(s, a, sf(0)) ∧ step(sf(n), af(n), sf(n + 1)) |
step(s, a, sf(0)), ¬ step(sf(n), af(n), sf(n + 1)), ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦
| step(s, a, sf(0)), ¬ step(sf(n), af(n), sf(n + 1)), ∀ n0. step((n0 = 0 ⊃ s;sf(n0 - 1)), (n0 = 0 ⊃ a;af(n0 - 1)), sf(n0)) ⊦ |
Used simplifier rules: ⊦ m + 1 ≠ 0; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n + 1
| step(s, a, sf(0)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ ∀ n. step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)) |
step(s, a, sf(0)), ¬ step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
| step(s, a, sf(0)), ¬ step(((s ' + sf))(n), ((a ' + af))(n), ((s ' + sf))(n + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
step(s, a, sf(0)), ¬ step((λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n), ((a ' + af))(n), (λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used terms: s ', sf
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| step(s, a, sf(0)), ¬ step((λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n), ((a ' + af))(n), (λ n. (n < # s ' ⊃ s '[n];sf(n - # s ')))(n + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), ((a ' + af))(n), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), ((a ' + af))(n), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), (λ n. (n < # a ' ⊃ a '[n];af(n - # a ')))(n), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used terms: a ', af
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), (λ n. (n < # a ' ⊃ a '[n];af(n - # a ')))(n), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), (n = 0 ⊃ a;af(n - 1)), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| step(s, a, sf(0)), ¬ step((n = 0 ⊃ s;sf(n - 1)), (n = 0 ⊃ a;af(n - 1)), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
n ≠ 0, step(s, a, sf(0)), ¬ step(sf(n - 1), (n = 0 ⊃ a;af(n - 1)), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
| n ≠ 0, step(s, a, sf(0)), ¬ step(sf(n - 1), (n = 0 ⊃ a;af(n - 1)), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
n ≠ 0, step(s, a, sf(0)), ¬ step(sf(n - 1), af(n - 1), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
| n ≠ 0, step(s, a, sf(0)), ¬ step(sf(n - 1), af(n - 1), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
n = m + 1, n ≠ 0, step(s, a, sf(0)), ¬ step(sf(m), af(m), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| n = m + 1, n ≠ 0, step(s, a, sf(0)), ¬ step(sf(m), af(m), sf(n)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
step(s, a, sf(0)), ¬ step(sf(m), af(m), sf(m + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| step(s, a, sf(0)), ¬ step(sf(m), af(m), sf(m + 1)), ∀ n. step(sf(n), af(n), sf(n + 1)) ⊦ |
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.