elims: fixes x :: "'a \<Rightarrow> 'b fundef option"   and xa :: "('c, 'd, 'a, 'op, 'opinl, 'opubx, 'e, 'f) Ubx.instr"   and xb :: "Unboxed.type option list"   and y :: "(unit, Unboxed.type option list) result" assumes "Subx.sp_instr x xa xb = y" obtains uu_ :: "'a \<Rightarrow> 'b fundef option" and uv_ :: "'c" and \<Sigma> :: "Unboxed.type option list" where "x = uu_" and "xa = Ubx.instr.IPush uv_" and "xb = \<Sigma>__" and "y = Ok (None # \<Sigma>__)"   | uw_ :: "'a \<Rightarrow> 'b fundef option" and ux_ :: "'e" and \<Sigma> :: "Unboxed.type option list" where "x = uw_" and "xa = IPushUbx1 ux_" and "xb = \<Sigma>'__" and "y = Ok (Some Ubx1 # \<Sigma>'__)"   | uy_ :: "'a \<Rightarrow> 'b fundef option" and uz_ :: "'f" and \<Sigma> :: "Unboxed.type option list" where "x = uy_" and "xa = IPushUbx2 uz_" and "xb = \<Sigma>''__" and "y = Ok (Some Ubx2 # \<Sigma>''__)"   | va_ :: "'a \<Rightarrow> 'b fundef option" and vb_ :: "Unboxed.type option" and \<Sigma> :: "Unboxed.type option list" where "x = va_" and "xa = Ubx.instr.IPop" and "xb = vb_ # \<Sigma>'''__" and "y = Ok \<Sigma>'''__"   | vc_ :: "'a \<Rightarrow> 'b fundef option" and vd_ :: "'d" and \<Sigma> :: "Unboxed.type option list" where "x = vc_" and "xa = Ubx.instr.ILoad vd_" and "xb = None # \<Sigma>''''__" and "y = Ok (None # \<Sigma>''''__)"   | ve_ :: "'a \<Rightarrow> 'b fundef option" and \<tau> :: "Unboxed.type" and vf_ :: "'d" and \<Sigma> :: "Unboxed.type option list" where "x = ve_" and "xa = ILoadUbx \<tau> vf_" and "xb = None # \<Sigma>'''''__" and "y = Ok (Some \<tau> # \<Sigma>'''''__)"   | vg_ :: "'a \<Rightarrow> 'b fundef option" and vh_ :: "'d" and \<Sigma> :: "Unboxed.type option list" where "x = vg_" and "xa = Ubx.instr.IStore vh_" and "xb = None # None # \<Sigma>''''''__" and "y = Ok \<Sigma>''''''__"   | vi_ :: "'a \<Rightarrow> 'b fundef option" and \<tau>\<^sub>1 :: "Unboxed.type" and vj_ :: "'d" and \<tau>\<^sub>2 :: "Unboxed.type" and \<Sigma> :: "Unboxed.type option list" where "x = vi_" and "xa = IStoreUbx \<tau>\<^sub>1 vj_" and "xb = None # Some \<tau>\<^sub>2 # \<Sigma>'''''''__" and "y = (if \<tau>\<^sub>1 = \<tau>\<^sub>2 then Ok \<Sigma>'''''''__ else Error ())"   | vk_ :: "'a \<Rightarrow> 'b fundef option" and op :: "'op" and \<Sigma> :: "Unboxed.type option list" where "x = vk_" and "xa = Ubx.instr.IOp op" and "xb = \<Sigma>''''''''__" and "y = Subx.sp_gen_pop_push (replicate (\<AA>\<rr>\<ii>\<tt>\<yy> op) None, None) \<Sigma>''''''''__"   | vl_ :: "'a \<Rightarrow> 'b fundef option" and opinl :: "'opinl" and \<Sigma> :: "Unboxed.type option list" where "x = vl_" and "xa = Ubx.instr.IOpInl opinl" and "xb = \<Sigma>'''''''''__" and "y = Subx.sp_gen_pop_push (replicate (\<AA>\<rr>\<ii>\<tt>\<yy> (\<DD>\<ee>\<II>\<nn>\<ll> opinl)) None, None) \<Sigma>'''''''''__"   | vm_ :: "'a \<Rightarrow> 'b fundef option" and opubx :: "'opubx" and \<Sigma> :: "Unboxed.type option list" where "x = vm_" and "xa = IOpUbx opubx" and "xb = \<Sigma>''''''''''__" and "y = Subx.sp_gen_pop_push (\<TT>\<yy>\<pp>\<ee>\<OO>\<ff>\<OO>\<pp> opubx) \<Sigma>''''''''''__"   | F :: "'a \<Rightarrow> 'b fundef option" and f :: "'a" and \<Sigma> :: "Unboxed.type option list" where "x = F" and "xa = Ubx.instr.ICall f" and "xb = \<Sigma>" and "y = Result.of_option () (F f) \<bind> (\<lambda>fd. Subx.sp_gen_pop_push (replicate (arity fd) None, None) \<Sigma>)"   | vn_ :: "'a \<Rightarrow> 'b fundef option" where "x = vn___" and "xa = Ubx.instr.IPop" and "xb = []" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" where "x = vna___" and "xa = Ubx.instr.ILoad v__" and "xb = []" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" and vc :: "Unboxed.type" and vb :: "Unboxed.type option list" where "x = vnb___" and "xa = Ubx.instr.ILoad vo__" and "xb = Some vca__ # vba__" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" where "x = vnc___" and "xa = ILoadUbx vp__ vaa__" and "xb = []" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" and vd :: "Unboxed.type" and vc :: "Unboxed.type option list" where "x = vnd___" and "xa = ILoadUbx vq__ vab__" and "xb = Some vda__ # vcb__" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" where "x = vne___" and "xa = Ubx.instr.IStore vr__" and "xb = []" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" and vc :: "Unboxed.type" and vb :: "Unboxed.type option list" where "x = vnf___" and "xa = Ubx.instr.IStore vs__" and "xb = Some vcc__ # vbb__" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" and va :: "Unboxed.type option" where "x = vng___" and "xa = Ubx.instr.IStore vt__" and "xb = [vac__]" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "'d" and va :: "Unboxed.type option" and ve :: "Unboxed.type" and vd :: "Unboxed.type option list" where "x = vnh___" and "xa = Ubx.instr.IStore vu__" and "xb = vad__ # Some vea__ # vdb__" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" where "x = vni___" and "xa = IStoreUbx vv__ vae__" and "xb = []" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" and vd :: "Unboxed.type" and vc :: "Unboxed.type option list" where "x = vnj___" and "xa = IStoreUbx vw__ vaf__" and "xb = Some vd # vc" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" and vb :: "Unboxed.type option" where "x = vnk___" and "xa = IStoreUbx vx__ vag__" and "xb = [vbc__]" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "Unboxed.type" and va :: "'d" and vb :: "Unboxed.type option" and ve :: "Unboxed.type option list" where "x = vnl___" and "xa = IStoreUbx vy__ va" and "xb = vb # None # ve" and "y = Error ()"   | vn_ :: "'a \<Rightarrow> 'b fundef option" and v :: "nat" and vp_ :: "Unboxed.type option list" where "x = vn_" and "xa = Ubx.instr.ICJump v" and "xb = vp_" and "y = Error ()"