| ⊦ el ≠ [] → (ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [])) |
el ≠ [] ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [])
| el ≠ [] ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = []) |
⊦ el ≠ [] → (ext !(α) = ⌜el⌝ ↔ (∃ al, α0. α = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(α0) = []))
el ≠ [], el ≠ [] → (ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(α0) = [])) ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [])
Used terms: el, ext, ⌜af⌝
| ⊦ el ≠ [] → (ext !(α) = ⌜el⌝ ↔ (∃ al, α0. α = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(α0) = [])) |
| el ≠ [], el ≠ [] → (ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(α0) = [])) ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(el.last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = []) |
el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []) ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [])
| el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []) ⊦ ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = []) |
ext !(⌜af⌝ ) = ⌜el⌝ , el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []) ⊦ ∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = []
ext !(⌜af⌝ ) ≠ ⌜el⌝ , el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []), ∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [] ⊦
| ext !(⌜af⌝ ) = ⌜el⌝ , el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []) ⊦ ∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [] |
ext !(α0) = [], ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , Some(ext !(al).last) = ext(al.last), ⌜af⌝ = ⌜al⌝ + α0, ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = []
| ext !(α0) = [], ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , Some(ext !(al).last) = ext(al.last), ⌜af⌝ = ⌜al⌝ + α0, ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = [] |
ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , ext !(α0) = [], α0 = ⌜af1⌝ , ⌜af⌝ = ⌜al⌝ + α0, Some(ext !(al).last) = ext(al.last), ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = []
Used simplifier rules: Stream('a) freely generated by ⌜ ⌝, ⌜ ⌝;; ⊦ σ0 + ⌜x⌝ = ⌜nf0⌝ ↔ σ0 = ⌜nf0⌝ ; (s) ⊦ ⌜x⌝ ≠ ⌜nf⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream
| ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , ext !(α0) = [], α0 = ⌜af1⌝ , ⌜af⌝ = ⌜al⌝ + α0, Some(ext !(al).last) = ext(al.last), ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = [] |
ext !(⌜af1⌝ ) = [], ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , Some(ext !(al).last) = ext(al.last), ⌜af⌝ = ⌜al⌝ + ⌜af1⌝ , ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = []
| ext !(⌜af1⌝ ) = [], ext !(⌜af⌝ ) = ⌜ext !(al)⌝ , Some(ext !(al).last) = ext(al.last), ⌜af⌝ = ⌜al⌝ + ⌜af1⌝ , ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, af0. ⌜af⌝ = ⌜al0⌝ + ⌜af0⌝ ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(⌜af0⌝ ) = [] |
Used terms: al, af1
| ext !(⌜af⌝ ) ≠ ⌜el⌝ , el ≠ [], ext !(⌜af⌝ ) = ⌜el⌝ ↔ (∃ al, α0. ⌜af⌝ = ⌜al⌝ + α0 ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(α0) = []), ∃ al, af0. ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ ∧ al ≠ [] ∧ ext !(al) = el ∧ Some(ext !(al).last) = ext(al.last) ∧ ext !(⌜af0⌝ ) = [] ⊦ |
ext !(⌜af0⌝ ) = [], ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ , Some(ext !(al).last) = ext(al.last), ext !(⌜af⌝ ) ≠ ⌜ext !(al)⌝ , ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, α0. ⌜af⌝ = ⌜al0⌝ + α0 ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(α0) = []
| ext !(⌜af0⌝ ) = [], ⌜af⌝ = ⌜al⌝ + ⌜af0⌝ , Some(ext !(al).last) = ext(al.last), ext !(⌜af⌝ ) ≠ ⌜ext !(al)⌝ , ext !(al) ≠ [], al ≠ [] ⊦ ∃ al0, α0. ⌜af⌝ = ⌜al0⌝ + α0 ∧ al0 ≠ [] ∧ ext !(al0) = ext !(al) ∧ Some(ext !(al0).last) = ext(al0.last) ∧ ext !(α0) = [] |
Used terms: al, ⌜af0⌝
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.