| ≤bF(cioaut, aioaut) ⊦ ≤nF(cioaut, aioaut) |
≤bF(cioaut, aioaut), ¬ ≤nF(cioaut, aioaut) ⊦
| ≤bF(cioaut, aioaut), ¬ ≤nF(cioaut, aioaut) ⊦ |
cioaut = IOAut(cstart, cstep, cext), ≤bF(cioaut, aioaut), ¬ ≤nF(cioaut, aioaut) ⊦
Used simplifier rules: IOAutomaton('s, 'a, 'e) freely generated by IOAut;;
| cioaut = IOAut(cstart, cstep, cext), ≤bF(cioaut, aioaut), ¬ ≤nF(cioaut, aioaut) ⊦ |
≤bF(IOAut(cstart, cstep, cext), aioaut), ¬ ≤nF(IOAut(cstart, cstep, cext), aioaut) ⊦
| ≤bF(IOAut(cstart, cstep, cext), aioaut), ¬ ≤nF(IOAut(cstart, cstep, cext), aioaut) ⊦ |
aioaut = IOAut(astart, astep, aext), ≤bF(IOAut(cstart, cstep, cext), aioaut), ¬ ≤nF(IOAut(cstart, cstep, cext), aioaut) ⊦
Used simplifier rules: IOAutomaton('s, 'a, 'e) freely generated by IOAut;;
| aioaut = IOAut(astart, astep, aext), ≤bF(IOAut(cstart, cstep, cext), aioaut), ¬ ≤nF(IOAut(cstart, cstep, cext), aioaut) ⊦ |
≤bF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)) ⊦
| ≤bF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)) ⊦ |
⊦ ≤bF(cioaut, aioaut) ↔ (∃ r. bfwsim(cioaut, aioaut, r))
¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), ∃ r. bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r) ⊦
Used terms: IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)
| ⊦ ≤bF(cioaut, aioaut) ↔ (∃ r. bfwsim(cioaut, aioaut, r)) |
| ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), ∃ r. bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r) ⊦ |
bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)) ⊦
| bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)) ⊦ |
bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r) ⊦ nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs')))
bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs'))) ⊦
Used terms: cstep, cext, aext, r, astart, cstart, astep
| bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r) ⊦ nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs'))) |
| bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ¬ ≤nF(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)), nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs'))) ⊦ |
⊦ ≤nF(cioaut, aioaut) ↔ (∃ r, size01f. nfwsim(cioaut, aioaut, r, size01f))
bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ∀ r, size01f. ¬ nfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, size01f), nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs'))) ⊦
Used terms: IOAut(cstart, cstep, cext), IOAut(astart, astep, aext)
| ⊦ ≤nF(cioaut, aioaut) ↔ (∃ r, size01f. nfwsim(cioaut, aioaut, r, size01f)) |
| bfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r), ∀ r, size01f. ¬ nfwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, size01f), nfwsim (IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag*(IOAut(astart, astep, aext))(asl, aal) ∧ aext !(aal) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, cs'))) ⊦ |
Used simplifier rules: ⊦ frag(ioa)(⌜sl⌝ , ⌜al⌝ ) ↔ frag*(ioa)(sl, al); (s) ⊦ ext !(⌜al⌝ ) = ⌜ext !(al)⌝ ; (s) ⊦ ⌜x⌝ = [] ↔ x = []; (s) Used terms: r, λ cs, ca, cs', as. min (λ n. ∃ asl, aal, aa, as1. frag(IOAut(astart, astep, aext))(⌜asl⌝ , ⌜aal⌝ ) ∧ aext !(⌜aal⌝ ) = [] ∧ asl.head = as ∧ (∀ as. as ∈ asl → r(as, cs)) ∧ cext(ca) = aext(aa) ∧ n = # aal ∧ astep(asl.last, aa, as1) ∧ r(as1, 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.