cases: fixes a1 :: "(name \<times> ty) list"   and a2 :: "trm"   and a3 :: "(coname \<times> ty) list" assumes "a1 \<turnstile> a2 \<turnstile> a3" obtains \<Gamma> :: "(name \<times> ty) list" and \<Delta> :: "(coname \<times> ty) list" and x :: "name" and B :: "ty" and a :: "coname" where "a1 = \<Gamma>'__" and "a2 = Ax xa__ aa__" and "a3 = \<Delta>'__" and "validn \<Gamma>'__" and "validc \<Delta>'__" and "(xa__, B__) \<in> set \<Gamma>'__" and "(aa__, B__) \<in> set \<Delta>'__"   | x :: "name" and \<Gamma> :: "(name \<times> ty) list" and B :: "ty" and M :: "trm" and \<Delta> :: "(coname \<times> ty) list" and \<Delta>' :: "(coname \<times> ty) list" and a :: "coname" where "a1 = \<Gamma>''__" and "a2 = NotR xb__.Ma__ ab__" and "a3 = \<Delta>'''__" and "xb__ \<sharp> \<Gamma>''__" and "((xb__, Ba__) # \<Gamma>''__) \<turnstile> Ma__ \<turnstile> \<Delta>''__" and "set \<Delta>'''__ = {(ab__, NOT Ba__)} \<union> set \<Delta>''__" and "validc \<Delta>'''__"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and \<Gamma> :: "(name \<times> ty) list" and M :: "trm" and B :: "ty" and \<Gamma>' :: "(name \<times> ty) list" and x :: "name" where "a1 = \<Gamma>''''__" and "a2 = NotL <ac__>.Mb__ xc__" and "a3 = \<Delta>''''__" and "ac__ \<sharp> \<Delta>''''__" and "\<Gamma>'''__ \<turnstile> Mb__ \<turnstile> ((ac__, Bb__) # \<Delta>''''__)" and "set \<Gamma>''''__ = {(xc__, NOT Bb__)} \<union> set \<Gamma>'''__" and "validn \<Gamma>''''__"   | x :: "name" and \<Gamma> :: "(name \<times> ty) list" and y :: "name" and B1 :: "ty" and M :: "trm" and \<Delta> :: "(coname \<times> ty) list" and \<Gamma>' :: "(name \<times> ty) list" and B2 :: "ty" where "a1 = \<Gamma>''''''__" and "a2 = AndL1 xd__.Mc__ y__" and "a3 = \<Delta>'''''__" and "xd__ \<sharp> (\<Gamma>'''''__, y__)" and "((xd__, B1__) # \<Gamma>'''''__) \<turnstile> Mc__ \<turnstile> \<Delta>'''''__" and "set \<Gamma>''''''__ = {(y__, B1__ AND B2__)} \<union> set \<Gamma>'''''__" and "validn \<Gamma>''''''__"   | x :: "name" and \<Gamma> :: "(name \<times> ty) list" and y :: "name" and B2 :: "ty" and M :: "trm" and \<Delta> :: "(coname \<times> ty) list" and \<Gamma>' :: "(name \<times> ty) list" and B1 :: "ty" where "a1 = \<Gamma>''''''''__" and "a2 = AndL2 xe__.Md__ ya__" and "a3 = \<Delta>''''''__" and "xe__ \<sharp> (\<Gamma>'''''''__, ya__)" and "((xe__, B2a__) # \<Gamma>'''''''__) \<turnstile> Md__ \<turnstile> \<Delta>''''''__" and "set \<Gamma>''''''''__ = {(ya__, B1a__ AND B2a__)} \<union> set \<Gamma>'''''''__" and "validn \<Gamma>''''''''__"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and N :: "trm" and c :: "coname" and b :: "coname" and M :: "trm" and \<Gamma> :: "(name \<times> ty) list" and B :: "ty" and C :: "ty" and \<Delta>' :: "(coname \<times> ty) list" where "a1 = \<Gamma>'''''''''__" and "a2 = AndR <ad__>.Me__ <b__>.N__ c" and "a3 = \<Delta>''''''''__" and "ad__ \<sharp> (\<Delta>'''''''__, N__, c)" and "b__ \<sharp> (\<Delta>'''''''__, Me__, c)" and "ad__ \<noteq> b__" and "\<Gamma>'''''''''__ \<turnstile> Me__ \<turnstile> ((ad__, Bc__) # \<Delta>'''''''__)" and "\<Gamma>'''''''''__ \<turnstile> N__ \<turnstile> ((b__, C__) # \<Delta>'''''''__)" and "set \<Delta>''''''''__ = {(c, Bc__ AND C__)} \<union> set \<Delta>'''''''__" and "validc \<Delta>''''''''__"   | x :: "name" and \<Gamma> :: "(name \<times> ty) list" and N :: "trm" and z :: "name" and y :: "name" and M :: "trm" and B :: "ty" and \<Delta> :: "(coname \<times> ty) list" and C :: "ty" and \<Gamma>' :: "(name \<times> ty) list" where "a1 = \<Gamma>'''''''''''__" and "a2 = OrL xf__.Mf__ yb__.Na__ z" and "a3 = \<Delta>'''''''''__" and "xf__ \<sharp> (\<Gamma>''''''''''__, Na__, z)" and "yb__ \<sharp> (\<Gamma>''''''''''__, Mf__, z)" and "xf__ \<noteq> yb__" and "((xf__, Bd__) # \<Gamma>''''''''''__) \<turnstile> Mf__ \<turnstile> \<Delta>'''''''''__" and "((yb__, Ca__) # \<Gamma>''''''''''__) \<turnstile> Na__ \<turnstile> \<Delta>'''''''''__" and "set \<Gamma>'''''''''''__ = {(z, Bd__ OR Ca__)} \<union> set \<Gamma>''''''''''__" and "validn \<Gamma>'''''''''''__"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and b :: "coname" and \<Gamma> :: "(name \<times> ty) list" and M :: "trm" and B1 :: "ty" and \<Delta>' :: "(coname \<times> ty) list" and B2 :: "ty" where "a1 = \<Gamma>''''''''''''__" and "a2 = OrR1 <ae__>.Mg__ ba__" and "a3 = \<Delta>'''''''''''__" and "ae__ \<sharp> (\<Delta>''''''''''__, ba__)" and "\<Gamma>''''''''''''__ \<turnstile> Mg__ \<turnstile> ((ae__, B1b__) # \<Delta>''''''''''__)" and "set \<Delta>'''''''''''__ = {(ba__, B1b__ OR B2b__)} \<union> set \<Delta>''''''''''__" and "validc \<Delta>'''''''''''__"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and b :: "coname" and \<Gamma> :: "(name \<times> ty) list" and M :: "trm" and B2 :: "ty" and \<Delta>' :: "(coname \<times> ty) list" and B1 :: "ty" where "a1 = \<Gamma>'''''''''''''__" and "a2 = OrR2 <af__>.Mh__ bb__" and "a3 = \<Delta>'''''''''''''__" and "af__ \<sharp> (\<Delta>''''''''''''__, bb__)" and "\<Gamma>'''''''''''''__ \<turnstile> Mh__ \<turnstile> ((af__, B2) # \<Delta>''''''''''''__)" and "set \<Delta>'''''''''''''__ = {(bb__, B1 OR B2)} \<union> set \<Delta>''''''''''''__" and "validc \<Delta>'''''''''''''__"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and N :: "trm" and x :: "name" and \<Gamma> :: "(name \<times> ty) list" and M :: "trm" and y :: "name" and B :: "ty" and C :: "ty" and \<Gamma>' :: "(name \<times> ty) list" where "a1 = \<Gamma>'" and "a2 = ImpL <ag__>.Mi__ xg__.Nb__ y" and "a3 = \<Delta>''''''''''''''__" and "ag__ \<sharp> (\<Delta>''''''''''''''__, Nb__)" and "xg__ \<sharp> (\<Gamma>''''''''''''''__, Mi__, y)" and "\<Gamma>''''''''''''''__ \<turnstile> Mi__ \<turnstile> ((ag__, Be__) # \<Delta>''''''''''''''__)" and "((xg__, Cb__) # \<Gamma>''''''''''''''__) \<turnstile> Nb__ \<turnstile> \<Delta>''''''''''''''__" and "set \<Gamma>' = {(y, Be__ IMP Cb__)} \<union> set \<Gamma>''''''''''''''__" and "validn \<Gamma>'"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and b :: "coname" and x :: "name" and \<Gamma> :: "(name \<times> ty) list" and B :: "ty" and M :: "trm" and C :: "ty" and \<Delta>' :: "(coname \<times> ty) list" where "a1 = \<Gamma>''''''''''''''''__" and "a2 = ImpR xh__.<ah__>.Mj__ b" and "a3 = \<Delta>'" and "ah__ \<sharp> (\<Delta>'''''''''''''''__, b)" and "xh__ \<sharp> \<Gamma>''''''''''''''''__" and "((xh__, Bf__) # \<Gamma>''''''''''''''''__) \<turnstile> Mj__ \<turnstile> ((ah__, C) # \<Delta>'''''''''''''''__)" and "set \<Delta>' = {(b, Bf__ IMP C)} \<union> set \<Delta>'''''''''''''''__" and "validc \<Delta>'"   | a :: "coname" and \<Delta> :: "(coname \<times> ty) list" and N :: "trm" and x :: "name" and \<Gamma> :: "(name \<times> ty) list" and M :: "trm" and B :: "ty" where "a1 = \<Gamma>" and "a2 = Cut <a>.M x.N" and "a3 = \<Delta>" and "a \<sharp> (\<Delta>, N)" and "x \<sharp> (\<Gamma>, M)" and "\<Gamma> \<turnstile> M \<turnstile> ((a, B) # \<Delta>)" and "((x, B) # \<Gamma>) \<turnstile> N \<turnstile> \<Delta>"