| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), C_≤T_A(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)) ⊦ C_≤T_A(Π(IOAut(start, step, ext), IOAut(cstart, cstep, cext), ren, cren), Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) |
C_≤T_A(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ C_≤T_A(Π(IOAut(start, step, ext), IOAut(cstart, cstep, cext), ren, cren), Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) ⊦
| C_≤T_A(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ C_≤T_A(Π(IOAut(start, step, ext), IOAut(cstart, cstep, cext), ren, cren), Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) ⊦ |
C_≤T_A(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ¬ C_≤T_A (IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)), IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) ⊦
Used simplifier rules: ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s)
| C_≤T_A(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ¬ C_≤T_A (IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)), IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) ⊦ |
⊦ C_≤T_A(cioaut, aioaut) ↔ (∀ β. trace(cioaut)(β) → trace(aioaut)(β))
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ C_≤T_A (IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)), IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦
Used terms: IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)
| ⊦ C_≤T_A(cioaut, aioaut) ↔ (∀ β. trace(cioaut)(β) → trace(aioaut)(β)) |
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ C_≤T_A (IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)), IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦ |
⊦ C_≤T_A(cioaut, aioaut) ↔ (∀ β. trace(cioaut)(β) → trace(aioaut)(β))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∃ β. ¬ ( trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β) → trace(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(β)) ⊦
Used terms: IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)), IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))
| ⊦ C_≤T_A(cioaut, aioaut) ↔ (∀ β. trace(cioaut)(β) → trace(aioaut)(β)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∃ β. ¬ ( trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β) → trace(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(β)) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ trace(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(β), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ trace(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(β), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦ |
⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. ¬(β = Π(ext, aext, ren, aren) !(α) ∧ exec(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α)) ⊦
Used terms: Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren), β
| ⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. ¬(β = Π(ext, aext, ren, aren) !(α) ∧ exec(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α)) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. β ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s)
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(β), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. β ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. β ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∃ σ, α. β = Π(ext, cext, ren, cren) !(α) ∧ exec(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(σ, α) ⊦
Used terms: Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren), β
| ⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. β ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∃ σ, α. β = Π(ext, cext, ren, cren) !(α) ∧ exec(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(σ, α) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s)
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
IOAut?(IOAut(lstart, lstep, lext)), IOAut?(IOAut(rstart, rstep, rext)), Πok(lext, rext, lren, rren), exec(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(pσ, pα) ⊦ exec(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, pσ, pα), πra(lstep, rstep, lren, rren, pσ, pα))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), exec(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦
Used simplifier rules: ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s) ⊦ IOAut(start, step, ext).start = start; (s) Used terms: pα, cext, cstep, cstart, ren, cren, start, step, ext, pcσ
| IOAut?(IOAut(lstart, lstep, lext)), IOAut?(IOAut(rstart, rstep, rext)), Πok(lext, rext, lren, rren), exec(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(pσ, pα) ⊦ exec(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, pσ, pα), πra(lstep, rstep, lren, rren, pσ, pα)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), exec(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s)
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ β. trace(IOAut(cstart, cstep, cext))(β) → trace(IOAut(astart, astep, aext))(β), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), trace(IOAut(cstart, cstep, cext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))) → trace(IOAut(astart, astep, aext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used terms: cext !(πra(step, cstep, ren, cren, pcσ, pα))
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), trace(IOAut(cstart, cstep, cext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))) → trace(IOAut(astart, astep, aext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ trace(IOAut(cstart, cstep, cext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(astart, astep, aext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ¬ trace(IOAut(cstart, cstep, cext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ σ, α. ¬(cext !(πra(step, cstep, ren, cren, pcσ, pα)) = cext !(α) ∧ exec(IOAut(cstart, cstep, cext))(σ, α)) ⊦
Used terms: cstart, cstep, cext, cext !(πra(step, cstep, ren, cren, pcσ, pα))
| ⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ σ, α. ¬(cext !(πra(step, cstep, ren, cren, pcσ, pα)) = cext !(α) ∧ exec(IOAut(cstart, cstep, cext))(σ, α)) ⊦ |
IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ σ, α. cext !(πra(step, cstep, ren, cren, pcσ, pα)) ≠ cext !(α) ∨ ¬ frag(IOAut(cstart, cstep, cext))(σ, α) ∨ ¬ cstart(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s)
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∀ σ, α. cext !(πra(step, cstep, ren, cren, pcσ, pα)) ≠ cext !(α) ∨ ¬ frag(IOAut(cstart, cstep, cext))(σ, α) ∨ ¬ cstart(σ[0]) ⊦ |
Used terms: πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)
| IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), trace(IOAut(astart, astep, aext))(cext !(πra(step, cstep, ren, cren, pcσ, pα))), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α))
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∃ σ, α. cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(α) ∧ exec(IOAut(astart, astep, aext))(σ, α) ⊦
Used terms: astart, astep, aext, cext !(πra(step, cstep, ren, cren, pcσ, pα))
| ⊦ trace(IOAut(start, step, ext))(β) ↔ (∃ σ, α. β = ext !(α) ∧ exec(IOAut(start, step, ext))(σ, α)) |
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]), ∃ σ, α. cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(α) ∧ exec(IOAut(astart, astep, aext))(σ, α) ⊦ |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), exec(Π(IOAut(start, step, ext), IOAut(cstart, cstep, cext), ren, cren))(pcσ, pα), exec(IOAut(astart, astep, aext))(aσ, aα), cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) ⊦ exec(Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα))
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), exec(Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s) ⊦ IOAut(start, step, ext).start = start; (s) Used terms: aren, pα, ren, ext, astep, pcσ, astart, step, aext, cstart, cren, cstep, aα, start, aσ, cext
| IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), exec(Π(IOAut(start, step, ext), IOAut(cstart, cstep, cext), ren, cren))(pcσ, pα), exec(IOAut(astart, astep, aext))(aσ, aα), cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) ⊦ exec(Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)) |
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), exec(Π(IOAut(start, step, ext), IOAut(astart, astep, aext), ren, aren)) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s) ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∀ σ, α. Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(α) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren)))(σ, α) ∨ ¬ Π(start, astart)(σ[0]) ⊦ |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)) ∨ ¬ Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]) ⊦
Used terms: repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)) ∨ ¬ frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)) ∨ ¬ Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]) ⊦ |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ |
⊦ nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) → Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ, aα)) = Π(ext, cext, ren, cren) !(pα)
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) → Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜hd(aσ) '⌝ + tl(aσ), aα)) = Π(ext, cext, ren, cren) !(pα) ⊦
Used terms: aren, pα, ren, ext, hd(aσ), astep, pcσ, astart, step, aext, cstart, cren, cstep, aα, start, tl(aσ), cext
| ⊦ nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) → Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ, aα)) = Π(ext, cext, ren, cren) !(pα) |
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) → Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜hd(aσ) '⌝ + tl(aσ), aα)) = Π(ext, cext, ren, cren) !(pα) ⊦ |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα)
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜hd(aσ) '⌝ + tl(aσ), aα)) = Π(ext, cext, ren, cren) !(pα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ nounsharedextR(cren, cext, ren) ∧ nounsharedextR(aren, aext, ren) ∧ Πok(ext, cext, ren, cren) ∧ Πok(ext, aext, ren, aren) ∧ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ sameshared(cren, aren, ren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα) |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), aσ = as + aσ0, Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), aσ ≠ [], IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα)
Used simplifier rules: ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), aσ = as + aσ0, Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), aσ ≠ [], IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα) |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext)
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜a '⌝ + σ)[0] = a; (s) ⊦ a + σ = ⌜a '⌝ + σ; (s) ⊦ ⌜a '⌝ + σ ≠ []; (s)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(start, step, ext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), sameshared(cren, aren, ren), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) |
⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext))
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∃ s. start(s) ∧ oinj(ext) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext)
Used terms: start, step, ext
| ⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext)) |
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∃ s. start(s) ∧ oinj(ext) ⊦ oinj(cext) ∧ oinj(aext) ∧ oinj(ext) |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext)
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren) ⊦ oinj(cext) ∧ oinj(aext) |
⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext))
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∃ cs. cstart(cs) ∧ oinj(cext) ⊦ oinj(cext) ∧ oinj(aext)
Used terms: cstart, cstep, cext
| ⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext)) |
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren), ∃ cs. cstart(cs) ∧ oinj(cext) ⊦ oinj(cext) ∧ oinj(aext) |
cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(cs), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), oinj(cext), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ¬ oinj(aext) ⊦
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), IOAut?(IOAut(astart, astep, aext)), astart(as), cstart(cs), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), nounsharedextR(aren, aext, ren), oinj(cext), oinj(ext), sameshared(cren, aren, ren), start(s), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜as '⌝ + aσ0, aα)[0]), Π(start, cstart)(pcσ[0]), Πok(ext, cext, ren, cren), Πok(ext, aext, ren, aren), ¬ oinj(aext) ⊦ |
⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext))
Used terms: astart, astep, aext
| ⊦ IOAut?(IOAut(start, step, ext)) ↔ (∃ s. start(s) ∧ oinj(ext)) |
| cext !(πra(step, cstep, ren, cren, pcσ, pα)) = aext !(aα), Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, ⌜hd(aσ) '⌝ + tl(aσ), aα)) = Π(ext, cext, ren, cren) !(pα), Π(ext, cext, ren, cren) !(pα) ≠ Π(ext, aext, ren, aren) !(repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), IOAut?(IOAut(astart, astep, aext)), IOAut?(IOAut(cstart, cstep, cext)), IOAut?(IOAut(start, step, ext)), astart(aσ[0]), cstart(πrs(step, cstep, ren, cren, pcσ, pα)[0]), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(cstart, cstep, cext))(πrs(step, cstep, ren, cren, pcσ, pα), πra(step, cstep, ren, cren, pcσ, pα)), frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, astart), Π(step, astep, ren, aren, ext, aext), Π(ext, aext, ren, aren))) (repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα), repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)), nounsharedextR(aren, aext, ren), nounsharedextR(cren, cext, ren), sameshared(cren, aren, ren), Π(start, cstart)(pcσ[0]), Π(start, astart)(repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα)[0]), Πok(ext, aext, ren, aren), Πok(ext, cext, ren, cren) ⊦ |
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
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.