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