cases: fixes a1 :: "trm"   and a2 :: "trm" assumes "a1 \<longrightarrow>\<^sub>a a2" obtains M :: "trm" and M' :: "trm" where "a1 = Ma__" and "a2 = M'__" and "Ma__ \<longrightarrow>\<^sub>l M'__"   | M :: "trm" and M' :: "trm" where "a1 = Mb__" and "a2 = M'a__" and "Mb__ \<longrightarrow>\<^sub>c M'a__"   | a :: "coname" and N :: "trm" and x :: "name" and M :: "trm" and M' :: "trm" where "a1 = Cut <aa__>.Mc__ xa__.N__" and "a2 = Cut <aa__>.M'b__ xa__.N__" and "aa__ \<sharp> N__" and "xa__ \<sharp> Mc__" and "Mc__ \<longrightarrow>\<^sub>a M'b__"   | a :: "coname" and N :: "trm" and x :: "name" and M :: "trm" and N' :: "trm" where "a1 = Cut <ab__>.Md__ xb__.Na__" and "a2 = Cut <ab__>.Md__ xb__.N'__" and "ab__ \<sharp> Na__" and "xb__ \<sharp> Md__" and "Na__ \<longrightarrow>\<^sub>a N'__"   | M :: "trm" and M' :: "trm" and a :: "coname" and x :: "name" where "a1 = NotL <ac__>.Me__ xc__" and "a2 = NotL <ac__>.M'c__ xc__" and "Me__ \<longrightarrow>\<^sub>a M'c__"   | M :: "trm" and M' :: "trm" and x :: "name" and a :: "coname" where "a1 = NotR xd__.Mf__ ad__" and "a2 = NotR xd__.M'd__ ad__" and "Mf__ \<longrightarrow>\<^sub>a M'd__"   | a :: "coname" and N :: "trm" and c :: "coname" and b :: "coname" and M :: "trm" and M' :: "trm" where "a1 = AndR <ae__>.Mg__ <b__>.Nb__ c__" and "a2 = AndR <ae__>.M'e__ <b__>.Nb__ c__" and "ae__ \<sharp> (Nb__, c__)" and "b__ \<sharp> (Mg__, c__)" and "b__ \<noteq> ae__" and "Mg__ \<longrightarrow>\<^sub>a M'e__"   | a :: "coname" and N :: "trm" and c :: "coname" and b :: "coname" and M :: "trm" and N' :: "trm" where "a1 = AndR <af__>.Mh__ <ba__>.Nc__ c" and "a2 = AndR <af__>.Mh__ <ba__>.N'a__ c" and "af__ \<sharp> (Nc__, c)" and "ba__ \<sharp> (Mh__, c)" and "ba__ \<noteq> af__" and "Nc__ \<longrightarrow>\<^sub>a N'a__"   | x :: "name" and y :: "name" and M :: "trm" and M' :: "trm" where "a1 = AndL1 xe__.Mi__ y__" and "a2 = AndL1 xe__.M'f__ y__" and "xe__ \<sharp> y__" and "Mi__ \<longrightarrow>\<^sub>a M'f__"   | x :: "name" and y :: "name" and M :: "trm" and M' :: "trm" where "a1 = AndL2 xf__.Mj__ ya__" and "a2 = AndL2 xf__.M'g__ ya__" and "xf__ \<sharp> ya__" and "Mj__ \<longrightarrow>\<^sub>a M'g__"   | x :: "name" and N :: "trm" and z :: "name" and y :: "name" and M :: "trm" and M' :: "trm" where "a1 = OrL xg__.Mk__ yb__.Nd__ z__" and "a2 = OrL xg__.M'h__ yb__.Nd__ z__" and "xg__ \<sharp> (Nd__, z__)" and "yb__ \<sharp> (Mk__, z__)" and "yb__ \<noteq> xg__" and "Mk__ \<longrightarrow>\<^sub>a M'h__"   | x :: "name" and N :: "trm" and z :: "name" and y :: "name" and M :: "trm" and N' :: "trm" where "a1 = OrL xh__.Ml__ yc__.Ne__ z" and "a2 = OrL xh__.Ml__ yc__.N'b__ z" and "xh__ \<sharp> (Ne__, z)" and "yc__ \<sharp> (Ml__, z)" and "yc__ \<noteq> xh__" and "Ne__ \<longrightarrow>\<^sub>a N'b__"   | a :: "coname" and b :: "coname" and M :: "trm" and M' :: "trm" where "a1 = OrR1 <ag__>.Mm__ bb__" and "a2 = OrR1 <ag__>.M'i__ bb__" and "ag__ \<sharp> bb__" and "Mm__ \<longrightarrow>\<^sub>a M'i__"   | a :: "coname" and b :: "coname" and M :: "trm" and M' :: "trm" where "a1 = OrR2 <ah__>.Mn__ bc__" and "a2 = OrR2 <ah__>.M'j__ bc__" and "ah__ \<sharp> bc__" and "Mn__ \<longrightarrow>\<^sub>a M'j__"   | a :: "coname" and N :: "trm" and x :: "name" and M :: "trm" and y :: "name" and M' :: "trm" where "a1 = ImpL <ai__>.Mo__ xi__.Nf__ yd__" and "a2 = ImpL <ai__>.M'k__ xi__.Nf__ yd__" and "ai__ \<sharp> Nf__" and "xi__ \<sharp> (Mo__, yd__)" and "Mo__ \<longrightarrow>\<^sub>a M'k__"   | a :: "coname" and N :: "trm" and x :: "name" and M :: "trm" and y :: "name" and N' :: "trm" where "a1 = ImpL <aj__>.Mp__ xj__.N y" and "a2 = ImpL <aj__>.Mp__ xj__.N' y" and "aj__ \<sharp> N" and "xj__ \<sharp> (Mp__, y)" and "N \<longrightarrow>\<^sub>a N'"   | a :: "coname" and b :: "coname" and M :: "trm" and M' :: "trm" and x :: "name" where "a1 = ImpR x.<a>.M b" and "a2 = ImpR x.<a>.M' b" and "a \<sharp> b" and "M \<longrightarrow>\<^sub>a M'"