- Trace
-
|- !Q N e.
Trace (Q,N) e =
(?s. Q (e 0,s 0) /\ (!t. N (e t,s t) (e (SUC t),s (SUC t))))
- Implements
-
|- !Q1 N1 Q2 N2.
(Q1,N1) Implements (Q2,N2) = (!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e)
- Simulates
-
|- !Q1 N1 Q2 N2.
(Q1,N1) Simulates (Q2,N2) =
(?R.
(!e s1. Q1 (e,s1) ==> (?s2. Q2 (e,s2) /\ R e s1 s2)) /\
(!e e' s1 s1' s2.
R e s1 s2 /\ N1 (e,s1) (e',s1') ==>
(?s2'. R e' s1' s2' /\ N2 (e,s2) (e',s2'))))
- Trace_Inv
-
|- !Q P N e.
Trace_Inv (Q,P,N) e =
(?s.
Q (e 0,s 0) /\
(!t. P (e t,s t)) /\
(!t. N (e t,s t) (e (SUC t),s (SUC t))))
- Deterministic
-
|- !Q N.
Deterministic (Q,N) =
(!e s s'. Q (e,s) /\ Q (e,s') ==> (s = s')) /\
(!e s e' s' s''. N (e,s) (e',s') /\ N (e,s) (e',s'') ==> (s' = s''))
- Prefix_Trace
-
|- !n Q N e.
Prefix_Trace n (Q,N) e =
(?s. Q (e 0,s 0) /\ (!t. t < n ==> N (e t,s t) (e (SUC t),s (SUC t))))
- Limit_Trace
-
|- !G e. Limit_Trace G e = (!n. Prefix_Trace n G e)
- Reachable
-
|- !Q N e' s'.
Reachable (Q,N) (e',s') =
(?n e s.
(e n = e') /\
(s n = s') /\
Q (e 0,s 0) /\
(!t. t < n ==> N (e t,s t) (e (SUC t),s (SUC t))))
- Finite_State
-
|- !Q N. Finite_State (Q,N) = Finite (Reachable (Q,N))
- Fin_Non_Det
-
|- !Q N.
Fin_Non_Det (Q,N) =
(!e. Finite (\s. Q (e,s))) /\ (!e s e'. Finite (\s'. N (e,s) (e',s')))
- No_Dead
-
|- !Q N.
No_Dead (Q,N) =
(!e s. Reachable (Q,N) (e,s) ==> (?e' s'. N (e,s) (e',s')))
- Stuttering
-
|- !Q N. Stuttering (Q,N) = (!e s. Reachable (Q,N) (e,s) ==> N (e,s) (e,s))
- Subset
-
|- !Q N.
Subset (Q,N) =
((\(e,x). (!s. x s = Q (e,s)) /\ (?s. x s)),
(\(e,x) (e',x').
(!s'. x' s' = (?s. x s /\ N (e,s) (e',s'))) /\ (?s'. x' s')))
- Powerset
-
|- !Q N.
Powerset (Q,N) =
((\(e,x). (!s. x s ==> Q (e,s)) /\ (?s. x s)),
(\(e,x) (e',x').
(!s'. x' s' ==> (?s. x s /\ N (e,s) (e',s'))) /\ (?s'. x' s')))
- Finite_Powerset
-
|- !Q N.
Finite_Powerset (Q,N) =
((\(e,x). (!s. x s ==> Q (e,s)) /\ (?s. x s) /\ Finite x),
(\(e,x) (e',x').
(!s'. x' s' ==> (?s. x s /\ N (e,s) (e',s'))) /\
(?s'. x' s') /\
Finite x'))
- Naive_Lemma
-
|- !P. ?Q N. P = Trace (Q,N)
- Sim_imp_Imp
-
|- !Q1 Q2 N1 N2.
(Q1,N1) Simulates (Q2,N2) ==> (!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e)
- Sim_Trans
-
|- !Q1 N1 Q2 N2 Q3 N3.
(Q1,N1) Simulates (Q2,N2) /\ (Q2,N2) Simulates (Q3,N3) ==>
(Q1,N1) Simulates (Q3,N3)
- Trace_Inv_Trace
-
|- !e Q P N. Trace_Inv (Q,P,N) e = Trace (Q,(\s s'. P s /\ N s s')) e
- Trace_Inv_Trace'
-
|- !e Q P N. Trace_Inv (Q,P,N) e = Trace (Q,(\s s'. P s /\ P s' /\ N s s')) e
- Trace_imp_Trace_Inv
-
|- !Q P N.
(?P'.
(!e s. Q (e,s) ==> P (e,s) /\ P' (e,s)) /\
(!e s e' s'.
N (e,s) (e',s') /\ P (e,s) /\ P' (e,s) ==>
P (e',s') /\ P' (e',s'))) ==>
(!e. Trace (Q,N) e ==> Trace_Inv (Q,P,N) e)
- Trace_Inv_imp_Trace
-
|- !Q P N e. Trace_Inv (Q,P,N) e ==> Trace (Q,N) e
- Trace_eq_Trace_Inv'
-
|- !N P Q.
(?P'.
(!e s. Q (e,s) ==> P (e,s) /\ P' (e,s)) /\
(!e s e' s'.
N (e,s) (e',s') /\ P (e,s) /\ P' (e,s) ==>
P (e',s') /\ P' (e',s'))) ==>
(!e. Trace (Q,N) e = Trace_Inv (Q,P,N) e)
- Trace_eq_Trace_Inv
-
|- !Q P N.
(!e s. Q (e,s) ==> P (e,s)) /\
(!e s e' s'. N (e,s) (e',s') /\ P (e,s) ==> P (e',s')) ==>
(!e. Trace (Q,N) e = Trace_Inv (Q,P,N) e)
- Trace_imp_Limit
-
|- !Q N e. Trace (Q,N) e ==> Limit_Trace (Q,N) e
- Deterministic_Limit_imp_Trace
-
|- !Q N. Deterministic (Q,N) ==> (!e. Limit_Trace (Q,N) e ==> Trace (Q,N) e)
- Deterministic_Limit_eq_Trace
-
|- !Q N. Deterministic (Q,N) ==> (!e. Trace (Q,N) e = Limit_Trace (Q,N) e)
- Prefix_Trace_imp_Prefix_Trace
-
|- !Q1 Q2 N1 N2.
(?R.
(!e s1. Q1 (e,s1) ==> (?s2. Q2 (e,s2) /\ R e s1 s2)) /\
(!e e' s1 s1' s2.
R e s1 s2 /\ N1 (e,s1) (e',s1') ==>
(?s2'. R e' s1' s2' /\ N2 (e,s2) (e',s2')))) ==>
(!e n. Prefix_Trace n (Q1,N1) e ==> Prefix_Trace n (Q2,N2) e)
- Deterministic_Subset
-
|- !Q N. Deterministic (Subset (Q,N))
- Prefix_imp_Prefix_Subset
-
|- !Q N e n. Prefix_Trace n (Q,N) e ==> Prefix_Trace n (Subset (Q,N)) e
- Prefix_Powerset_imp_Prefix
-
|- !Q N e n. Prefix_Trace n (Powerset (Q,N)) e ==> Prefix_Trace n (Q,N) e
- Prefix_Subset_imp_Prefix_Powerset
-
|- !Q N e n.
Prefix_Trace n (Subset (Q,N)) e ==> Prefix_Trace n (Powerset (Q,N)) e
- Limit_imp_Limit_Subset
-
|- !Q N e. Limit_Trace (Q,N) e ==> Limit_Trace (Subset (Q,N)) e
- Limit_Subset_imp_Trace_Subset
-
|- !N Q e. Limit_Trace (Subset (Q,N)) e ==> Trace (Subset (Q,N)) e
- Trace_Subset_imp_Trace_Powerset
-
|- !Q N e. Trace (Subset (Q,N)) e ==> Trace (Powerset (Q,N)) e
- Trace_Powerset_imp_Limit_Powerset
-
|- !N Q e. Trace (Powerset (Q,N)) e ==> Limit_Trace (Powerset (Q,N)) e
- Limit_Powerset_imp_Limit
-
|- !Q N e. Limit_Trace (Powerset (Q,N)) e ==> Limit_Trace (Q,N) e
- Trace_Finite_Powerset_eq_Trace
-
|- !Q N e. Trace (Finite_Powerset (Q,N)) e = Trace (Q,N) e
- Sim_imp_Imp'
-
|- !N2 Q2 N1 Q1.
(Q1,N1) Simulates Finite_Powerset (Q2,N2) ==>
(!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e)
- No_Dead_THM
-
|- No_Dead (Q,N) =
(!e' s'.
Reachable (Q,N) (e',s') ==>
(?e s.
(e 0 = e') /\ (s 0 = s') /\ (!t. N (e t,s t) (e (SUC t),s (SUC t)))))
- Stutter_No_Dead
-
|- !Q N. Stuttering (Q,N) ==> No_Dead (Q,N)
- Complete_Deterministic
-
|- !Q1 Q2 N1 N2.
No_Dead (Q1,N1) /\ Deterministic (Q2,N2) ==>
(!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e) ==>
(Q1,N1) Simulates (Q2,N2)
- Simulates_Subset_Powerset
-
|- !Q1 N1 Q2 N2.
(Q1,N1) Simulates Subset (Q2,N2) ==> (Q1,N1) Simulates Powerset (Q2,N2)
- Subset_sim_Powerset
-
|- !Q N. Subset (Q,N) Simulates Powerset (Q,N)
- Trace_Infinite_Path
-
|- !Q N.
Trace (Q,N) e =
Infinite_Path (0,x)
(\(t,s) (t',s').
(t' = SUC t) /\
((t = 0) => (Q (e 0,s')) | (N (e (PRE t),s) (e t,s'))))
- Limit_Unbounded
-
|- !Q N.
Limit_Trace (Q,N) e =
Unbounded_Path (0,x)
(\(t,s) (t',s').
(t' = SUC t) /\
((t = 0) => (Q (e 0,s')) | (N (e (PRE t),s) (e t,s'))))
- Fin_Non_Det_Powerset_Trace
-
|- !Q N.
Fin_Non_Det (Q,N) ==> (!e. Trace (Powerset (Q,N)) e ==> Trace (Q,N) e)
- Fin_Sim_Powerset_imp_Imp
-
|- !Q1 N1 Q2 N2.
Fin_Non_Det (Q2,N2) ==>
(Q1,N1) Simulates Powerset (Q2,N2) ==>
(!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e)
- Complete_No_Dead
-
|- !Q1 N1 Q2 N2.
No_Dead (Q1,N1) /\ (!e. Trace (Q1,N1) e ==> Trace (Q2,N2) e) ==>
(Q1,N1) Simulates Powerset (Q2,N2)
- Subset_Simulates_Finite_Powerset
-
|- !Q N. Fin_Non_Det (Q,N) ==> Subset (Q,N) Simulates Finite_Powerset (Q,N)