cases: fixes a1 :: "e list"   and a2 :: "e list" assumes "\<lparr>a1\<rparr> \<leadsto> \<lparr>a2\<rparr>" obtains c :: "i32" and iop :: "unop_i" where "a1 = [$C ConstInt32 c__, $Unop_i T_i32 iop__]" and "a2 = [$C ConstInt32 (app_unop_i iop__ c__)]"   | c :: "i64" and iop :: "unop_i" where "a1 = [$C ConstInt64 ca__, $Unop_i T_i64 iopa__]" and "a2 = [$C ConstInt64 (app_unop_i iopa__ ca__)]"   | c :: "f32" and fop :: "unop_f" where "a1 = [$C ConstFloat32 cb__, $Unop_f T_f32 fop__]" and "a2 = [$C ConstFloat32 (app_unop_f fop__ cb__)]"   | c :: "f64" and fop :: "unop_f" where "a1 = [$C ConstFloat64 cc__, $Unop_f T_f64 fopa__]" and "a2 = [$C ConstFloat64 (app_unop_f fopa__ cc__)]"   | iop :: "binop_i" and c1 :: "i32" and c2 :: "i32" and c :: "i32" where "a1 = [$C ConstInt32 c1__, $C ConstInt32 c2__, $Binop_i T_i32 iopb__]" and "a2 = [$C ConstInt32 cd__]" and "app_binop_i iopb__ c1__ c2__ = Some cd__"   | iop :: "binop_i" and c1 :: "i32" and c2 :: "i32" where "a1 = [$C ConstInt32 c1a__, $C ConstInt32 c2a__, $Binop_i T_i32 iopc__]" and "a2 = [Trap]" and "app_binop_i iopc__ c1a__ c2a__ = None"   | iop :: "binop_i" and c1 :: "i64" and c2 :: "i64" and c :: "i64" where "a1 = [$C ConstInt64 c1b__, $C ConstInt64 c2b__, $Binop_i T_i64 iopd__]" and "a2 = [$C ConstInt64 ce__]" and "app_binop_i iopd__ c1b__ c2b__ = Some ce__"   | iop :: "binop_i" and c1 :: "i64" and c2 :: "i64" where "a1 = [$C ConstInt64 c1c__, $C ConstInt64 c2c__, $Binop_i T_i64 iope__]" and "a2 = [Trap]" and "app_binop_i iope__ c1c__ c2c__ = None"   | fop :: "binop_f" and c1 :: "f32" and c2 :: "f32" and c :: "f32" where "a1 = [$C ConstFloat32 c1d__, $C ConstFloat32 c2d__, $Binop_f T_f32 fopb__]" and "a2 = [$C ConstFloat32 cf__]" and "app_binop_f fopb__ c1d__ c2d__ = Some cf__"   | fop :: "binop_f" and c1 :: "f32" and c2 :: "f32" where "a1 = [$C ConstFloat32 c1e__, $C ConstFloat32 c2e__, $Binop_f T_f32 fopc__]" and "a2 = [Trap]" and "app_binop_f fopc__ c1e__ c2e__ = None"   | fop :: "binop_f" and c1 :: "f64" and c2 :: "f64" and c :: "f64" where "a1 = [$C ConstFloat64 c1f__, $C ConstFloat64 c2f__, $Binop_f T_f64 fopd__]" and "a2 = [$C ConstFloat64 cg__]" and "app_binop_f fopd__ c1f__ c2f__ = Some cg__"   | fop :: "binop_f" and c1 :: "f64" and c2 :: "f64" where "a1 = [$C ConstFloat64 c1g__, $C ConstFloat64 c2g__, $Binop_f T_f64 fope__]" and "a2 = [Trap]" and "app_binop_f fope__ c1g__ c2g__ = None"   | c :: "i32" and testop :: "testop" where "a1 = [$C ConstInt32 ch__, $Testop T_i32 testop__]" and "a2 = [$C ConstInt32 (wasm_bool (app_testop_i testop__ ch__))]"   | c :: "i64" and testop :: "testop" where "a1 = [$C ConstInt64 ci__, $Testop T_i64 testop]" and "a2 = [$C ConstInt32 (wasm_bool (app_testop_i testop ci__))]"   | c1 :: "i32" and c2 :: "i32" and iop :: "relop_i" where "a1 = [$C ConstInt32 c1h__, $C ConstInt32 c2h__, $Relop_i T_i32 iopf__]" and "a2 = [$C ConstInt32 (wasm_bool (app_relop_i iopf__ c1h__ c2h__))]"   | c1 :: "i64" and c2 :: "i64" and iop :: "relop_i" where "a1 = [$C ConstInt64 c1i__, $C ConstInt64 c2i__, $Relop_i T_i64 iop]" and "a2 = [$C ConstInt32 (wasm_bool (app_relop_i iop c1i__ c2i__))]"   | c1 :: "f32" and c2 :: "f32" and fop :: "relop_f" where "a1 = [$C ConstFloat32 c1j__, $C ConstFloat32 c2j__, $Relop_f T_f32 fopf__]" and "a2 = [$C ConstInt32 (wasm_bool (app_relop_f fopf__ c1j__ c2j__))]"   | c1 :: "f64" and c2 :: "f64" and fop :: "relop_f" where "a1 = [$C ConstFloat64 c1, $C ConstFloat64 c2, $Relop_f T_f64 fop]" and "a2 = [$C ConstInt32 (wasm_bool (app_relop_f fop c1 c2))]"   | t1 :: "t" and v :: "v" and t2 :: "t" and sx :: "sx option" and v' :: "v" where "a1 = [$C v__, $Cvtop t2__ Convert t1__ sx__]" and "a2 = [$C v']" and "types_agree t1__ v__" and "cvt t2__ sx__ v__ = Some v'"   | t1 :: "t" and v :: "v" and t2 :: "t" and sx :: "sx option" where "a1 = [$C va__, $Cvtop t2a__ Convert t1a__ sx]" and "a2 = [Trap]" and "types_agree t1a__ va__" and "cvt t2a__ sx va__ = None"   | t1 :: "t" and v :: "v" and t2 :: "t" where "a1 = [$C vb__, $Cvtop t2 Reinterpret t1 None]" and "a2 = [$C wasm_deserialise (bits vb__) t2]" and "types_agree t1 vb__"   | "a1 = [$Unreachable]" and "a2 = [Trap]"   | "a1 = [$Nop]" and "a2 = []"   | v :: "v" where "a1 = [$C vc__, $Drop]" and "a2 = []"   | n :: "i32" and v1 :: "v" and v2 :: "v" where "a1 = [$C v1__, $C v2__, $C ConstInt32 n__, $Select]" and "a2 = [$C v2__]" and "int_eq n__ 0"   | n :: "i32" and v1 :: "v" and v2 :: "v" where "a1 = [$C v1, $C v2, $C ConstInt32 na__, $Select]" and "a2 = [$C v1]" and "\<not> int_eq na__ 0"   | vs :: "e list" and n :: "nat" and t1s :: "t list" and t2s :: "t list" and m :: "nat" and es :: "b_e list" where "a1 = vs__ @ [$Block (t1s__ _> t2s__) es__]" and "a2 = [Label m__ [] (vs__ @ ($* es__))]" and "const_list vs__" and "length vs__ = nb__" and "length t1s__ = nb__" and "length t2s__ = m__"   | vs :: "e list" and n :: "nat" and t1s :: "t list" and t2s :: "t list" and m :: "nat" and es :: "b_e list" where "a1 = vsa__ @ [$Loop (t1s _> t2s) esa__]" and "a2 = [Label nc__ [$Loop (t1s _> t2s) esa__] (vsa__ @ ($* esa__))]" and "const_list vsa__" and "length vsa__ = nc__" and "length t1s = nc__" and "length t2s = m"   | n :: "i32" and tf :: "tf" and e1s :: "b_e list" and e2s :: "b_e list" where "a1 = [$C ConstInt32 nd__, $b_e.If tf__ e1s__ e2s__]" and "a2 = [$Block tf__ e2s__]" and "int_eq nd__ 0"   | n :: "i32" and tf :: "tf" and e1s :: "b_e list" and e2s :: "b_e list" where "a1 = [$C ConstInt32 ne__, $b_e.If tf e1s e2s]" and "a2 = [$Block tf e1s]" and "\<not> int_eq ne__ 0"   | vs :: "e list" and n :: "nat" and es :: "e list" where "a1 = [Label nf__ esb__ vsb__]" and "a2 = vsb__" and "const_list vsb__"   | n :: "nat" and es :: "e list" where "a1 = [Label ng__ esc__ [Trap]]" and "a2 = [Trap]"   | vs :: "e list" and n :: "nat" and i :: "nat" and lholed :: "Lholed" and LI :: "e list" and es :: "e list" where "a1 = [Label nh__ esd__ LI]" and "a2 = vsc__ @ esd__" and "const_list vsc__" and "length vsc__ = nh__" and "Lfilled i__ lholed__ (vsc__ @ [$Br i__]) LI"   | n :: "i32" and i :: "nat" where "a1 = [$C ConstInt32 ni__, $Br_if ia__]" and "a2 = []" and "int_eq ni__ 0"   | n :: "i32" and i :: "nat" where "a1 = [$C ConstInt32 nj__, $Br_if ib__]" and "a2 = [$Br ib__]" and "\<not> int_eq nj__ 0"   | "is" :: "nat list" and c :: "i32" and i :: "nat" where "a1 = [$C ConstInt32 cj__, $Br_table is__ ic__]" and "a2 = [$Br (is__ ! nat_of_int cj__)]" and "nat_of_int cj__ < length is__"   | "is" :: "nat list" and c :: "i32" and i :: "nat" where "a1 = [$C ConstInt32 c, $Br_table is id__]" and "a2 = [$Br id__]" and "length is \<le> nat_of_int c"   | es :: "e list" and n :: "nat" and i :: "nat" and vs :: "v list" where "a1 = [Local nk__ ie__ vsd__ ese__]" and "a2 = ese__" and "const_list ese__" and "length ese__ = nk__"   | n :: "nat" and i :: "nat" and vs :: "v list" where "a1 = [Local nl__ if__ vse__ [Trap]]" and "a2 = [Trap]"   | vs :: "e list" and n :: "nat" and j :: "nat" and lholed :: "Lholed" and es :: "e list" and i :: "nat" and vls :: "v list" where "a1 = [Local n ig__ vls esf__]" and "a2 = vs" and "const_list vs" and "length vs = n" and "Lfilled j lholeda__ (vs @ [$Return]) esf__"   | v :: "e" and i :: "nat" where "a1 = [v, $Tee_local i]" and "a2 = [v, v, $Set_local i]" and "is_const v"   | es :: "e list" and lholed :: "Lholed" where "a1 = es" and "a2 = [Trap]" and "es \<noteq> [Trap]" and "Lfilled 0 lholed [Trap] es"