cases: fixes a1 :: "bool"   and a2 :: "char list list"   and a3 :: "v sem_env"   and a4 :: "'b state"   and a5 :: "dec"   and a6 :: "'b state \<times> (v sem_env, v) result" assumes "evaluate_dec a1 a2 a3 a4 a5 a6" obtains ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and p :: "pat" and e :: "exp0" and v1 :: "v" and env' :: "(char list \<times> v) list" and s1 :: "'b state" and s2 :: "'b state" and locs :: "locn \<times> locn" where "a1 = ck__" and "a2 = mn__" and "a3 = enva__" and "a4 = s1__" and "a5 = Dlet locs__ p__ ea__" and "a6 = (s2__, Rval (make_sem_env (alist_to_ns env') nsEmpty))" and "evaluate ck__ enva__ s1__ ea__ (s2__, Rval v1__) \<and> allDistinct (pat_bindings p__ []) \<and> pmatch (c enva__) (refs s2__) p__ v1__ [] = Match env'"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and p :: "pat" and e :: "exp0" and v1 :: "v" and s1 :: "'b state" and s2 :: "'b state" and locs :: "locn \<times> locn" where "a1 = cka__" and "a2 = mna__" and "a3 = envb__" and "a4 = s1a__" and "a5 = Dlet locsa__ pa__ eb__" and "a6 = (s2a__, Rerr (Rraise Bindv))" and "evaluate cka__ envb__ s1a__ eb__ (s2a__, Rval v1a__) \<and> allDistinct (pat_bindings pa__ []) \<and> pmatch (c envb__) (refs s2a__) pa__ v1a__ [] = No_match"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and p :: "pat" and e :: "exp0" and v1 :: "v" and s1 :: "'b state" and s2 :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckb__" and "a2 = mnb__" and "a3 = envc__" and "a4 = s1" and "a5 = Dlet locsb__ pb__ ec__" and "a6 = (s2, Rerr (Rabort Rtype_error))" and "evaluate ckb__ envc__ s1 ec__ (s2, Rval v1) \<and> allDistinct (pat_bindings pb__ []) \<and> pmatch (c envc__) (refs s2) pb__ v1 [] = Match_type_error"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and p :: "pat" and e :: "exp0" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckc__" and "a2 = mnc__" and "a3 = envd__" and "a4 = sa__" and "a5 = Dlet locsc__ pc__ ed__" and "a6 = (sa__, Rerr (Rabort Rtype_error))" and "\<not> allDistinct (pat_bindings pc__ [])"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and p :: "pat" and e :: "exp0" and err :: "v error_result" and s :: "'b state" and s' :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckd__" and "a2 = mnd__" and "a3 = enve__" and "a4 = sb__" and "a5 = Dlet locsd__ p e" and "a6 = (s', Rerr err)" and "evaluate ckd__ enve__ sb__ e (s', Rerr err) \<and> allDistinct (pat_bindings p [])"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and funs :: "(char list \<times> char list \<times> exp0) list" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = cke__" and "a2 = mne__" and "a3 = envf__" and "a4 = sc__" and "a5 = Dletrec locse__ funs__" and "a6 = (sc__, Rval (make_sem_env (build_rec_env funs__ envf__ nsEmpty) nsEmpty))" and "allDistinct (map (\<lambda>x. case x of (x, y, z) \<Rightarrow> x) funs__)"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and funs :: "(char list \<times> char list \<times> exp0) list" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckf__" and "a2 = mnf__" and "a3 = envg__" and "a4 = sd__" and "a5 = Dletrec locsf__ funs" and "a6 = (sd__, Rerr (Rabort Rtype_error))" and "\<not> allDistinct (map (\<lambda>x. case x of (x, y, z) \<Rightarrow> x) funs)"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and tds :: "(char list list \<times> char list \<times> (char list \<times> t list) list) list" and s :: "'b state" and new_tdecs :: "tid_or_exn set" and locs :: "locn \<times> locn" where "a1 = ckg__" and "a2 = mng__" and "a3 = envh__" and "a4 = se__" and "a5 = Dtype locsg__ tds__" and "a6 = (update_defined_types (\<lambda>_. new_tdecs \<union> defined_types se__) se__, Rval (make_sem_env nsEmpty (build_tdefs mng__ tds__)))" and "check_dup_ctors tds__ \<and> new_tdecs = type_defs_to_new_tdecs mng__ tds__ \<and> disjnt new_tdecs (defined_types se__) \<and> allDistinct (map (\<lambda>x. case x of (tvs, tn, ctors) \<Rightarrow> tn) tds__)"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and tds :: "(char list list \<times> char list \<times> (char list \<times> t list) list) list" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckh__" and "a2 = mnh__" and "a3 = envi__" and "a4 = sf__" and "a5 = Dtype locsh__ tds" and "a6 = (sf__, Rerr (Rabort Rtype_error))" and "\<not> check_dup_ctors tds \<or> \<not> disjnt (type_defs_to_new_tdecs mnh__ tds) (defined_types sf__) \<or> \<not> allDistinct (map (\<lambda>x. case x of (tvs, tn, ctors) \<Rightarrow> tn) tds)"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and tvs :: "char list list" and tn :: "char list" and t0 :: "t" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = cki__" and "a2 = mni__" and "a3 = envj__" and "a4 = sg__" and "a5 = Dtabbrev locsi__ tvs tn t0" and "a6 = (sg__, Rval (make_sem_env nsEmpty nsEmpty))"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and cn :: "char list" and ts :: "t list" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = ckj__" and "a2 = mnj__" and "a3 = envk__" and "a4 = sh__" and "a5 = Dexn locsj__ cn__ ts__" and "a6 = (update_defined_types (\<lambda>_. {TypeExn (mk_id mnj__ cn__)} \<union> defined_types sh__) sh__, Rval (make_sem_env nsEmpty (nsSing cn__ (length ts__, TypeExn (mk_id mnj__ cn__)))))" and "TypeExn (mk_id mnj__ cn__) \<notin> defined_types sh__"   | ck :: "bool" and mn :: "char list list" and env :: "v sem_env" and cn :: "char list" and ts :: "t list" and s :: "'b state" and locs :: "locn \<times> locn" where "a1 = ck" and "a2 = mn" and "a3 = env" and "a4 = s" and "a5 = Dexn locs cn ts" and "a6 = (s, Rerr (Rabort Rtype_error))" and "TypeExn (mk_id mn cn) \<in> defined_types s"