src/HOL/Bali/Evaln.thy
changeset 13601 fd3e3d6b37b2
parent 13462 56610e2ba220
child 13688 a0b16d42d489
equal deleted inserted replaced
13600:9702c8636a7b 13601:fd3e3d6b37b2
   598                 statM: "max_spec G accC statT \<lparr>name=mn,parTs=pTs\<rparr> 
   598                 statM: "max_spec G accC statT \<lparr>name=mn,parTs=pTs\<rparr> 
   599                          = {((statDeclT,statM),pTs')}" and
   599                          = {((statDeclT,statM),pTs')}" and
   600                  mode: "mode = invmode statM e" and
   600                  mode: "mode = invmode statM e" and
   601                     T: "T =Inl (resTy statM)" and
   601                     T: "T =Inl (resTy statM)" and
   602         eq_accC_accC': "accC=accC'"
   602         eq_accC_accC': "accC=accC'"
   603       by (rule wt_elim_cases) auto
   603       by (rule wt_elim_cases) fastsimp+
   604     from conf_s0 wt_e hyp_e
   604     from conf_s0 wt_e hyp_e
   605     have eval_e: "G\<turnstile>Norm s0 \<midarrow>e-\<succ>a'\<rightarrow> s1"
   605     have eval_e: "G\<turnstile>Norm s0 \<midarrow>e-\<succ>a'\<rightarrow> s1"
   606       by blast
   606       by blast
   607     with wf conf_s0 wt_e
   607     with wf conf_s0 wt_e
   608     obtain conf_s1: "s1\<Colon>\<preceq>(G, L)" and
   608     obtain conf_s1: "s1\<Colon>\<preceq>(G, L)" and
  1556                 statM: "max_spec G accC statT \<lparr>name=mn,parTs=pTs\<rparr> 
  1556                 statM: "max_spec G accC statT \<lparr>name=mn,parTs=pTs\<rparr> 
  1557                          = {((statDeclT,statM),pTs')}" and
  1557                          = {((statDeclT,statM),pTs')}" and
  1558                  mode: "mode = invmode statM e" and
  1558                  mode: "mode = invmode statM e" and
  1559                     T: "T =Inl (resTy statM)" and
  1559                     T: "T =Inl (resTy statM)" and
  1560         eq_accC_accC': "accC=accC'"
  1560         eq_accC_accC': "accC=accC'"
  1561       by (rule wt_elim_cases) auto
  1561       by (rule wt_elim_cases) fastsimp+
  1562     from conf_s0 wt_e
  1562     from conf_s0 wt_e
  1563     obtain n1 where
  1563     obtain n1 where
  1564       evaln_e: "G\<turnstile>Norm s0 \<midarrow>e-\<succ>a'\<midarrow>n1\<rightarrow> s1"
  1564       evaln_e: "G\<turnstile>Norm s0 \<midarrow>e-\<succ>a'\<midarrow>n1\<rightarrow> s1"
  1565       by (rules dest: hyp_e)
  1565       by (rules dest: hyp_e)
  1566     from wf eval_e conf_s0 wt_e
  1566     from wf eval_e conf_s0 wt_e
  1791                 wt_e: "\<lparr>prg=G, cls=accC, lcl=L\<rparr>\<turnstile>e\<Colon>-Class statC" and
  1791                 wt_e: "\<lparr>prg=G, cls=accC, lcl=L\<rparr>\<turnstile>e\<Colon>-Class statC" and
  1792             accfield: "accfield G accC statC fn = Some (statDeclC,f)" and
  1792             accfield: "accfield G accC statC fn = Some (statDeclC,f)" and
  1793                 stat: "stat=is_static f" and
  1793                 stat: "stat=is_static f" and
  1794                accC': "accC'=accC" and
  1794                accC': "accC'=accC" and
  1795 	           T: "T=(Inl (type f))"
  1795 	           T: "T=(Inl (type f))"
  1796        by (rule wt_elim_cases) (auto simp add: member_is_static_simp)
  1796        by (rule wt_elim_cases) (fastsimp simp add: member_is_static_simp)
  1797     from wf wt_e 
  1797     from wf wt_e 
  1798     have iscls_statC: "is_class G statC"
  1798     have iscls_statC: "is_class G statC"
  1799       by (auto dest: ty_expr_is_type type_is_class)
  1799       by (auto dest: ty_expr_is_type type_is_class)
  1800     with wf accfield 
  1800     with wf accfield 
  1801     have iscls_statDeclC: "is_class G statDeclC"
  1801     have iscls_statDeclC: "is_class G statDeclC"