| ≤wB(cioaut, aioaut) ⊦ ≤BI(cioaut, aioaut) |
≤wB(cioaut, aioaut), ¬ ≤BI(cioaut, aioaut) ⊦
| ≤wB(cioaut, aioaut), ¬ ≤BI(cioaut, aioaut) ⊦ |
cioaut = IOAut(cINV, cstep, cext), ≤wB(cioaut, aioaut), ¬ ≤BI(cioaut, aioaut) ⊦
Used simplifier rules: IOAutomaton('s, 'a, 'e) freely generated by IOAut;;
| cioaut = IOAut(cINV, cstep, cext), ≤wB(cioaut, aioaut), ¬ ≤BI(cioaut, aioaut) ⊦ |
≤wB(IOAut(cINV, cstep, cext), aioaut), ¬ ≤BI(IOAut(cINV, cstep, cext), aioaut) ⊦
| ≤wB(IOAut(cINV, cstep, cext), aioaut), ¬ ≤BI(IOAut(cINV, cstep, cext), aioaut) ⊦ |
aioaut = IOAut(aINV, astep, aext), ≤wB(IOAut(cINV, cstep, cext), aioaut), ¬ ≤BI(IOAut(cINV, cstep, cext), aioaut) ⊦
Used simplifier rules: IOAutomaton('s, 'a, 'e) freely generated by IOAut;;
| aioaut = IOAut(aINV, astep, aext), ≤wB(IOAut(cINV, cstep, cext), aioaut), ¬ ≤BI(IOAut(cINV, cstep, cext), aioaut) ⊦ |
≤wB(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)), ¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)) ⊦
| ≤wB(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)), ¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)) ⊦ |
⊦ ≤wB(cioaut, aioaut) ↔ (∃ t, aINV. weakbwsim(cioaut, aioaut, t, aINV))
¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)), ∃ t, aINV0. weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0) ⊦
Used terms: IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)
| ⊦ ≤wB(cioaut, aioaut) ↔ (∃ t, aINV. weakbwsim(cioaut, aioaut, t, aINV)) |
| ¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)), ∃ t, aINV0. weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0) ⊦ |
weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)) ⊦
| weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ¬ ≤BI(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)) ⊦ |
⊦ ≤BI(cioaut, aioaut) ↔ (∃ t, aINV, cINV. bwsim(cioaut, aioaut, t, cINV, aINV))
weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0) ⊦
Used terms: IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext)
| ⊦ ≤BI(cioaut, aioaut) ↔ (∃ t, aINV, cINV. bwsim(cioaut, aioaut, t, cINV, aINV)) |
| weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0) ⊦ |
weakbwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, aINV) ⊦ bwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, λ cs. ∃ csl, cal. exec*(IOAut(cstart, cstep, cext))(csl, cal) ∧ csl.last = cs, λ as. aINV(as) ∧ (∃ asl, aal. exec*(IOAut(astart, astep, aext))(asl, aal) ∧ asl.last = as))
weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0), bwsim (IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, λ cs. ∃ csl, cal. exec*(IOAut(cINV, cstep, cext))(csl, cal) ∧ csl.last = cs, λ as. aINV0(as) ∧ (∃ asl, aal. exec*(IOAut(aINV, astep, aext))(asl, aal) ∧ asl.last = as)) ⊦
Used terms: astep, aINV, t, aext, cINV, cstep, aINV0, cext
| weakbwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, aINV) ⊦ bwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, λ cs. ∃ csl, cal. exec*(IOAut(cstart, cstep, cext))(csl, cal) ∧ csl.last = cs, λ as. aINV(as) ∧ (∃ asl, aal. exec*(IOAut(astart, astep, aext))(asl, aal) ∧ asl.last = as)) |
| weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0), bwsim (IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, λ cs. ∃ csl, cal. exec*(IOAut(cINV, cstep, cext))(csl, cal) ∧ csl.last = cs, λ as. aINV0(as) ∧ (∃ asl, aal. exec*(IOAut(aINV, astep, aext))(asl, aal) ∧ asl.last = as)) ⊦ |
weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0), bwsim (IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, λ cs. ∃ csl, cal. frag*(IOAut(cINV, cstep, cext))(csl, cal) ∧ cINV(csl[0]) ∧ csl.last = cs, λ as. aINV0(as) ∧ (∃ asl, aal. frag*(IOAut(aINV, astep, aext))(asl, aal) ∧ aINV(asl[0]) ∧ asl.last = as)) ⊦
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec*(ioa)(sl, al) ↔ frag*(ioa)(sl, al) ∧ ioa.start(sl[0]); (s)
| weakbwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, aINV0), ∀ t, aINV0, cINV0. ¬ bwsim(IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, cINV0, aINV0), bwsim (IOAut(cINV, cstep, cext), IOAut(aINV, astep, aext), t, λ cs. ∃ csl, cal. frag*(IOAut(cINV, cstep, cext))(csl, cal) ∧ cINV(csl[0]) ∧ csl.last = cs, λ as. aINV0(as) ∧ (∃ asl, aal. frag*(IOAut(aINV, astep, aext))(asl, aal) ∧ aINV(asl[0]) ∧ asl.last = as)) ⊦ |
Used terms: t, λ as. aINV0(as) ∧ (∃ asl, aal. frag*(IOAut(aINV, astep, aext))(asl, aal) ∧ aINV(asl[0]) ∧ asl.last = as), λ cs. ∃ csl, cal. frag*(IOAut(cINV, cstep, cext))(csl, cal) ∧ cINV(csl[0]) ∧ csl.last = cs
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.