[Imprint][Data Privacy Statement][E-Mail]
Back to main index.
View the specification.
View theorem base summary,
View theorem base listing,
the used properties by spec,
the dependency list,
the symbol table,
enrich
IOtrace
with
predicates
≤BI : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e);
bwsim : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e) × ('cs × 'as → Bool) × ('cs → Bool) × ('as → Bool);
≤B : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e);
bwsim : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e) × ('cs × 'as → Bool);
≤wB : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e);
weakbwsim : IOAutomaton('cs, 'ca, 'e) × IOAutomaton('as, 'aa, 'e) × ('cs × 'as → Bool) × ('as → Bool);
variables
cioaut : IOAutomaton('cs, 'ca, 'e);
aioaut : IOAutomaton('as, 'aa, 'e);
t : 'cs × 'as → Bool;
aINV : 'as → Bool;
cINV : 'cs → Bool;
cstart : 'cs → Bool;
astart : 'as → Bool;
astep : 'as × 'aa × 'as → Bool;
cstep : 'cs × 'ca × 'cs → Bool;
cext : 'ca → Option('e);
aext : 'aa → Option('e);
cs : 'cs;
as : 'as;
csf : Nat → 'cs;
asf : Nat → 'as;
cal : List('ca);
cα : Stream('ca);
aal : List('aa);
aα : Stream('aa);
asl : List('as);
csl : List('cs);
ca : 'ca;
aa : 'aa;
cσ : Stream('cs);
aσ : Stream('as);
el : List('e);
axioms
backwardsim-def: ≤B(cioaut, aioaut) ↔ (∃ t. bwsim(cioaut, aioaut, t));
proofobls-backwardsim:
bwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t)
↔ (∀ cs. ∃ as. t(cs, as)) ∧ (∀ cs, as. cstart(cs) ∧ t(cs, as) → astart(as))
∧ (∀ cs, ca, cs0, as0. cstep(cs, ca, cs0) ∧ t(cs0, as0) → (∃ as. move(IOAut(astart, astep, aext))(as, cext !(ca '), as0) ∧ t(cs, as)));
backwardsiminv-def: ≤BI(cioaut, aioaut) ↔ (∃ t, aINV, cINV. bwsim(cioaut, aioaut, t, cINV, aINV));
proofobls-backwardsiminv:
bwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, cINV, aINV)
↔ (∀ cs. cstart(cs) → cINV(cs)) ∧ (∀ as. astart(as) → aINV(as)) ∧ (∀ cs, ca, cs0. cINV(cs) ∧ cstep(cs, ca, cs0) → cINV(cs0))
∧ (∀ as, aa, as0. aINV(as) ∧ astep(as, aa, as0) → aINV(as0)) ∧ (∀ cs. cINV(cs) → (∃ as. t(cs, as) ∧ aINV(as)))
∧ (∀ cs, as. cstart(cs) ∧ t(cs, as) ∧ aINV(as) → astart(as))
∧ (∀ cs, ca, cs0, as0.
cINV(cs) ∧ cstep(cs, ca, cs0) ∧ t(cs0, as0) ∧ aINV(as0)
→ (∃ as. aINV(as) ∧ move(IOAut(astart, astep, aext))(as, cext !(ca '), as0) ∧ t(cs, as)));
weakbackwardsim-def: ≤wB(cioaut, aioaut) ↔ (∃ t, aINV. weakbwsim(cioaut, aioaut, t, aINV));
proofobls-weakbackwardsim:
weakbwsim(IOAut(cstart, cstep, cext), IOAut(astart, astep, aext), t, aINV)
↔ (∀ csl, cal. exec*(IOAut(cstart, cstep, cext))(csl, cal) → (∃ as. t(csl.last, as) ∧ aINV(as)))
∧ (∀ cs, as. cstart(cs) ∧ t(cs, as) ∧ aINV(as) → astart(as)) ∧ (∀ asl, aal. exec*(IOAut(astart, astep, aext))(asl, aal) → aINV(asl.last))
∧ (∀ csl, cal, ca, cs0, as0.
exec*(IOAut(cstart, cstep, cext))(csl, cal) ∧ cstep(csl.last, ca, cs0) ∧ t(cs0, as0) ∧ aINV(as0)
→ (∃ as. aINV(as) ∧ move(IOAut(astart, astep, aext))(as, cext !(ca '), as0) ∧ t(csl.last, as)));
end enrich