simps: fixes a1 :: "e list"   and a2 :: "e list" shows "\<lparr>a1\<rparr> \<leadsto> \<lparr>a2\<rparr> = ((\<exists>c iop. a1 = [$C ConstInt32 c, $Unop_i T_i32 iop] \<and> a2 = [$C ConstInt32 (app_unop_i iop c)]) \<or> (\<exists>c iop. a1 = [$C ConstInt64 c, $Unop_i T_i64 iop] \<and> a2 = [$C ConstInt64 (app_unop_i iop c)]) \<or> (\<exists>c fop. a1 = [$C ConstFloat32 c, $Unop_f T_f32 fop] \<and> a2 = [$C ConstFloat32 (app_unop_f fop c)]) \<or> (\<exists>c fop. a1 = [$C ConstFloat64 c, $Unop_f T_f64 fop] \<and> a2 = [$C ConstFloat64 (app_unop_f fop c)]) \<or> (\<exists>iop c1 c2 c. a1 = [$C ConstInt32 c1, $C ConstInt32 c2, $Binop_i T_i32 iop] \<and> a2 = [$C ConstInt32 c] \<and> app_binop_i iop c1 c2 = Some c) \<or> (\<exists>iop c1 c2. a1 = [$C ConstInt32 c1, $C ConstInt32 c2, $Binop_i T_i32 iop] \<and> a2 = [Trap] \<and> app_binop_i iop c1 c2 = None) \<or> (\<exists>iop c1 c2 c. a1 = [$C ConstInt64 c1, $C ConstInt64 c2, $Binop_i T_i64 iop] \<and> a2 = [$C ConstInt64 c] \<and> app_binop_i iop c1 c2 = Some c) \<or> (\<exists>iop c1 c2. a1 = [$C ConstInt64 c1, $C ConstInt64 c2, $Binop_i T_i64 iop] \<and> a2 = [Trap] \<and> app_binop_i iop c1 c2 = None) \<or> (\<exists>fop c1 c2 c. a1 = [$C ConstFloat32 c1, $C ConstFloat32 c2, $Binop_f T_f32 fop] \<and> a2 = [$C ConstFloat32 c] \<and> app_binop_f fop c1 c2 = Some c) \<or> (\<exists>fop c1 c2. a1 = [$C ConstFloat32 c1, $C ConstFloat32 c2, $Binop_f T_f32 fop] \<and> a2 = [Trap] \<and> app_binop_f fop c1 c2 = None) \<or> (\<exists>fop c1 c2 c. a1 = [$C ConstFloat64 c1, $C ConstFloat64 c2, $Binop_f T_f64 fop] \<and> a2 = [$C ConstFloat64 c] \<and> app_binop_f fop c1 c2 = Some c) \<or> (\<exists>fop c1 c2. a1 = [$C ConstFloat64 c1, $C ConstFloat64 c2, $Binop_f T_f64 fop] \<and> a2 = [Trap] \<and> app_binop_f fop c1 c2 = None) \<or> (\<exists>c testop. a1 = [$C ConstInt32 c, $Testop T_i32 testop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_testop_i testop c))]) \<or> (\<exists>c testop. a1 = [$C ConstInt64 c, $Testop T_i64 testop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_testop_i testop c))]) \<or> (\<exists>c1 c2 iop. a1 = [$C ConstInt32 c1, $C ConstInt32 c2, $Relop_i T_i32 iop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_relop_i iop c1 c2))]) \<or> (\<exists>c1 c2 iop. a1 = [$C ConstInt64 c1, $C ConstInt64 c2, $Relop_i T_i64 iop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_relop_i iop c1 c2))]) \<or> (\<exists>c1 c2 fop. a1 = [$C ConstFloat32 c1, $C ConstFloat32 c2, $Relop_f T_f32 fop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_relop_f fop c1 c2))]) \<or> (\<exists>c1 c2 fop. a1 = [$C ConstFloat64 c1, $C ConstFloat64 c2, $Relop_f T_f64 fop] \<and> a2 = [$C ConstInt32 (wasm_bool (app_relop_f fop c1 c2))]) \<or> (\<exists>t1 v t2 sx v'. a1 = [$C v, $Cvtop t2 Convert t1 sx] \<and> a2 = [$C v'] \<and> types_agree t1 v \<and> cvt t2 sx v = Some v') \<or> (\<exists>t1 v t2 sx. a1 = [$C v, $Cvtop t2 Convert t1 sx] \<and> a2 = [Trap] \<and> types_agree t1 v \<and> cvt t2 sx v = None) \<or> (\<exists>t1 v t2. a1 = [$C v, $Cvtop t2 Reinterpret t1 None] \<and> a2 = [$C wasm_deserialise (bits v) t2] \<and> types_agree t1 v) \<or> a1 = [$Unreachable] \<and> a2 = [Trap] \<or> a1 = [$Nop] \<and> a2 = [] \<or> (\<exists>v. a1 = [$C v, $Drop] \<and> a2 = []) \<or> (\<exists>n v1 v2. a1 = [$C v1, $C v2, $C ConstInt32 n, $Select] \<and> a2 = [$C v2] \<and> int_eq n 0) \<or> (\<exists>n v1 v2. a1 = [$C v1, $C v2, $C ConstInt32 n, $Select] \<and> a2 = [$C v1] \<and> \<not> int_eq n 0) \<or> (\<exists>vs n t1s t2s m es. a1 = vs @ [$Block (t1s _> t2s) es] \<and> a2 = [Label m [] (vs @ ($* es))] \<and> const_list vs \<and> length vs = n \<and> length t1s = n \<and> length t2s = m) \<or> (\<exists>vs n t1s t2s m es. a1 = vs @ [$Loop (t1s _> t2s) es] \<and> a2 = [Label n [$Loop (t1s _> t2s) es] (vs @ ($* es))] \<and> const_list vs \<and> length vs = n \<and> length t1s = n \<and> length t2s = m) \<or> (\<exists>n tf e1s e2s. a1 = [$C ConstInt32 n, $b_e.If tf e1s e2s] \<and> a2 = [$Block tf e2s] \<and> int_eq n 0) \<or> (\<exists>n tf e1s e2s. a1 = [$C ConstInt32 n, $b_e.If tf e1s e2s] \<and> a2 = [$Block tf e1s] \<and> \<not> int_eq n 0) \<or> (\<exists>vs n es. a1 = [Label n es vs] \<and> a2 = vs \<and> const_list vs) \<or> (\<exists>n es. a1 = [Label n es [Trap]] \<and> a2 = [Trap]) \<or> (\<exists>vs n i lholed LI es. a1 = [Label n es LI] \<and> a2 = vs @ es \<and> const_list vs \<and> length vs = n \<and> Lfilled i lholed (vs @ [$Br i]) LI) \<or> (\<exists>n i. a1 = [$C ConstInt32 n, $Br_if i] \<and> a2 = [] \<and> int_eq n 0) \<or> (\<exists>n i. a1 = [$C ConstInt32 n, $Br_if i] \<and> a2 = [$Br i] \<and> \<not> int_eq n 0) \<or> (\<exists>is c i. a1 = [$C ConstInt32 c, $Br_table is i] \<and> a2 = [$Br (is ! nat_of_int c)] \<and> nat_of_int c < length is) \<or> (\<exists>is c i. a1 = [$C ConstInt32 c, $Br_table is i] \<and> a2 = [$Br i] \<and> length is \<le> nat_of_int c) \<or> (\<exists>es n i vs. a1 = [Local n i vs es] \<and> a2 = es \<and> const_list es \<and> length es = n) \<or> (\<exists>n i vs. a1 = [Local n i vs [Trap]] \<and> a2 = [Trap]) \<or> (\<exists>vs n j lholed es i vls. a1 = [Local n i vls es] \<and> a2 = vs \<and> const_list vs \<and> length vs = n \<and> Lfilled j lholed (vs @ [$Return]) es) \<or> (\<exists>v i. a1 = [v, $Tee_local i] \<and> a2 = [v, v, $Set_local i] \<and> is_const v) \<or> (\<exists>es lholed. a1 = es \<and> a2 = [Trap] \<and> es \<noteq> [Trap] \<and> Lfilled 0 lholed [Trap] es))"