Notation rsNext_Down :=
(fun (z : Clock) (lt_z_kg1 : lt_Ck z kg1) (st_x : S_Ck ST) (sc_y : S_Ck SC) =>
rsNext (rsIni TrGlobal (st_x, (sc_y, (Lowering, z))))
(tGl_Down (tgDown lt_z_kg1) st_x sc_y)) (only parsing).
Notation rsNext_Up :=
(fun (z : Clock) (ge_z_kg2 : ge_Ck z kg2) (lt_z_kg3 : lt_Ck z kg3)
(st_x : S_Ck ST) (sc_y : S_Ck SC) =>
rsNext (rsIni TrGlobal (st_x, (sc_y, (Raising, z))))
(tGl_Up (tgUp ge_z_kg2 lt_z_kg3) st_x sc_y)) (only parsing).
Notation rs_Next_Approach :=
(fun (x y : Clock) (sg_z : S_Ck SG) =>
rsNext StGlobal (rsIni StGlobal TrGlobal (Far, x, (Sc1, y, sg_z)))
(tGl_Approach (ttApproach x) (tcApproach y) sg_z))
(only parsing).
Notation rsNext_Exit :=
(fun (x y : Clock) (lt_x_kt2 : lt_Ck x kt2) (sg_z : S_Ck SG) =>
rsNext (rsIni TrGlobal (Inside, x, (Sc3, y, sg_z)))
(tGl_Exit (ttExit lt_x_kt2) (tcExit y) sg_z))
(only parsing).
Notation rsNext_Lower :=
(fun (y z : Clock) (eq_y_kc1 : eq_Ck y kc1) (st_x : S_Ck ST) =>
rsNext (rsIni TrGlobal (st_x, (Sc2, y, (Open, z))))
(tGl_Lower (tcLower eq_y_kc1) (tgLower z) st_x))
(only parsing).
Notation rsNext_Raise :=
(fun (y z : Clock) (lt_y_kc2 : lt_Ck y kc2) (st_x : S_Ck ST) =>
rsNext (rsIni TrGlobal (st_x, (Sc4, y, (Closed, z))))
(tGl_Raise (tcRaise lt_y_kc2) (tgRaise z) st_x))
(only parsing).
Ltac SplitTrans' :=
intros s1 s2 l rs_s1 p_s1 tr_gl; generalize (rsNext rs_s1 tr_gl);
generalize rs_s1; clear rs_s1; generalize p_s1;
clear p_s1; elim tr_gl.
Ltac SplitTrans'_Simpl :=
SplitTrans';
[ Simpl_In
| Simpl_Down
| Simpl_Up
| Simpl_Approach
| Simpl_Exit
| Simpl_Lower
| Simpl_Raise
| Simpl_Tick ].
Ltac ExistsHere_ITick s :=
apply exists_ with (tr := TrGlobal) (P := InvTick) (1 := rsIni TrGlobal s).
(* NonZeno proof for the system TCG *)

(* Specifications: *)
Lemma NonZeno :
ForAll TrGlobal SiniTCG (fun s : StGlobal => Exists TrGlobal s InvTick).