elims: fixes x :: "fm"   and xa :: "(poly \<times> tm) \<times> poly \<times> tm"   and y :: "fm" assumes "msubst x xa = y" obtains p :: "fm" and q :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = And p__ q__" and "xa = ((c__, t__), d__, s__)" and "y = Parametric_Ferrante_Rackoff.conj (msubst p__ ((c__, t__), d__, s__)) (msubst q__ ((c__, t__), d__, s__))"   | p :: "fm" and q :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Or p q" and "xa = ((ca__, ta__), da__, sa__)" and "y = Parametric_Ferrante_Rackoff.disj (msubst p ((ca__, ta__), da__, sa__)) (msubst q ((ca__, ta__), da__, sa__))"   | a :: "poly" and r :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (CNP 0 a__ r__)" and "xa = ((cb__, tb__), db__, sb__)" and "y = msubsteq cb__ tb__ db__ sb__ a__ r__"   | a :: "poly" and r :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (CNP 0 aa__ ra__)" and "xa = ((cc__, tc__), dc__, sc__)" and "y = msubstneq cc__ tc__ dc__ sc__ aa__ ra__"   | a :: "poly" and r :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (CNP 0 ab__ rb__)" and "xa = ((cd__, td__), dd__, sd__)" and "y = msubstlt cd__ td__ dd__ sd__ ab__ rb__"   | a :: "poly" and r :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (CNP 0 a r)" and "xa = ((ce__, te__), de__, se__)" and "y = msubstle ce__ te__ de__ se__ a r"   | c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = T" and "xa = ((cf__, tf__), df__, sf__)" and "y = T"   | c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = F" and "xa = ((cg__, tg__), dg__, sg__)" and "y = F"   | va :: "poly" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (CP va__)" and "xa = ((ch__, th__), dh__, sh__)" and "y = Le (CP va__)"   | va :: "nat" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (tm.Bound vaa__)" and "xa = ((ci__, ti__), di__, si__)" and "y = Le (tm.Bound vaa__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (tm.Add vab__ vb__)" and "xa = ((cj__, tj__), dj__, sj__)" and "y = Le (tm.Add vab__ vb__)"   | va :: "poly" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (tm.Mul vac__ vba__)" and "xa = ((ck__, tk__), dk__, sk__)" and "y = Le (tm.Mul vac__ vba__)"   | va :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (tm.Neg vad__)" and "xa = ((cl__, tl__), dl__, sl__)" and "y = Le (tm.Neg vad__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (tm.Sub vae__ vbb__)" and "xa = ((cm__, tm__), dm__, sm__)" and "y = Le (tm.Sub vae__ vbb__)"   | vd :: "nat" and vb :: "poly" and vc :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Le (CNP (Suc vd__) vbc__ vc__)" and "xa = ((cn__, tn__), dn__, sn__)" and "y = Le (CNP (Suc vd__) vbc__ vc__)"   | va :: "poly" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (CP vaf__)" and "xa = ((co__, to__), do__, so__)" and "y = Lt (CP vaf__)"   | va :: "nat" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (tm.Bound vag__)" and "xa = ((cp__, tp__), dp__, sp__)" and "y = Lt (tm.Bound vag__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (tm.Add vah__ vbd__)" and "xa = ((cq__, tq__), dq__, sq__)" and "y = Lt (tm.Add vah__ vbd__)"   | va :: "poly" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (tm.Mul vai__ vbe__)" and "xa = ((cr__, tr__), dr__, sr__)" and "y = Lt (tm.Mul vai__ vbe__)"   | va :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (tm.Neg vaj__)" and "xa = ((cs__, ts__), ds__, ss__)" and "y = Lt (tm.Neg vaj__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (tm.Sub vak__ vbf__)" and "xa = ((ct__, tt__), dt__, st__)" and "y = Lt (tm.Sub vak__ vbf__)"   | vd :: "nat" and vb :: "poly" and vc :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Lt (CNP (Suc vda__) vbg__ vca__)" and "xa = ((cu__, tu__), du__, su__)" and "y = Lt (CNP (Suc vda__) vbg__ vca__)"   | va :: "poly" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (CP val__)" and "xa = ((cv__, tv__), dv__, sv__)" and "y = Eq (CP val__)"   | va :: "nat" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (tm.Bound vam__)" and "xa = ((cw__, tw__), dw__, sw__)" and "y = Eq (tm.Bound vam__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (tm.Add van__ vbh__)" and "xa = ((cx__, tx__), dx__, sx__)" and "y = Eq (tm.Add van__ vbh__)"   | va :: "poly" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (tm.Mul vao__ vbi__)" and "xa = ((cy__, ty__), dy__, sy__)" and "y = Eq (tm.Mul vao__ vbi__)"   | va :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (tm.Neg vap__)" and "xa = ((cz__, tz__), dz__, sz__)" and "y = Eq (tm.Neg vap__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (tm.Sub vaq__ vbj__)" and "xa = ((ea__, ua__), eb__, ub__)" and "y = Eq (tm.Sub vaq__ vbj__)"   | vd :: "nat" and vb :: "poly" and vc :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Eq (CNP (Suc vdb__) vbk__ vcb__)" and "xa = ((ec__, uc__), ed__, ud__)" and "y = Eq (CNP (Suc vdb__) vbk__ vcb__)"   | va :: "poly" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (CP var__)" and "xa = ((ee__, ue__), ef__, uf__)" and "y = NEq (CP var__)"   | va :: "nat" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (tm.Bound vas__)" and "xa = ((eg__, ug__), eh__, uh__)" and "y = NEq (tm.Bound vas__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (tm.Add vat__ vbl__)" and "xa = ((ei__, ui__), ej__, uj__)" and "y = NEq (tm.Add vat__ vbl__)"   | va :: "poly" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (tm.Mul vau__ vbm__)" and "xa = ((ek__, uk__), el__, ul__)" and "y = NEq (tm.Mul vau__ vbm__)"   | va :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (tm.Neg vav__)" and "xa = ((em__, um__), en__, un__)" and "y = NEq (tm.Neg vav__)"   | va :: "tm" and vb :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (tm.Sub vaw__ vbn__)" and "xa = ((eo__, uo__), ep__, up__)" and "y = NEq (tm.Sub vaw__ vbn__)"   | vd :: "nat" and vb :: "poly" and vc :: "tm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NEq (CNP (Suc vd) vb vc)" and "xa = ((eq__, uq__), er__, ur__)" and "y = NEq (CNP (Suc vd) vb vc)"   | v :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = NOT v__" and "xa = ((es__, us__), et__, ut__)" and "y = NOT v__"   | v :: "fm" and va :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Imp ve__ vax__" and "xa = ((eu__, uu__), ev__, uv__)" and "y = Imp ve__ vax__"   | v :: "fm" and va :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = Iff vf__ va" and "xa = ((ew__, uw__), ex__, ux__)" and "y = Iff vf__ va"   | v :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = E vg__" and "xa = ((ey__, uy__), ez__, uz__)" and "y = E vg__"   | v :: "fm" and c :: "poly" and t :: "tm" and d :: "poly" and s :: "tm" where "x = A v" and "xa = ((c, t), d, s)" and "y = A v"