Notation no_invG :=
  (fun s : S_Ck SG =>
   match s with
   | (sg, z) =>
       sg = Lowering /\ ~ lt_Ck z kg1 \/ sg = Raising /\ ~ lt_Ck z kg3
   end) (only parsing).

Lemma INV_G_general : forall s1 s2 : StGlobal, (fun s : StGlobal => match s with | (st_x, (sc_y, sg_z)) => InvT st_x /\ InvC sc_y /\ InvG sg_z end) s1 -> RState TrGlobal s1 s2 -> InvG (snd (snd s2)).