src/HOL/Bali/WellForm.thy
changeset 37678 0040bafffdef
parent 35440 bdf8ad377877
child 37956 ee939247b2fb
equal deleted inserted replaced
37677:c5a8b612e571 37678:0040bafffdef
  2166       "is_static dm = is_static sm" 
  2166       "is_static dm = is_static sm" 
  2167       "G\<turnstile>resTy dm\<preceq>resTy sm"  
  2167       "G\<turnstile>resTy dm\<preceq>resTy sm"  
  2168       by (force dest!: ws_dynmethd accmethd_SomeD)
  2168       by (force dest!: ws_dynmethd accmethd_SomeD)
  2169     with dynlookup eq_mheads 
  2169     with dynlookup eq_mheads 
  2170     show ?thesis 
  2170     show ?thesis 
  2171       by (cases emh type: *) (auto)
  2171       by (cases emh type: prod) (auto)
  2172   next
  2172   next
  2173     case Iface_methd
  2173     case Iface_methd
  2174     fix I im
  2174     fix I im
  2175     assume    statI: "statT = IfaceT I" and
  2175     assume    statI: "statT = IfaceT I" and
  2176           eq_mheads: "mthd im = mhd emh" and
  2176           eq_mheads: "mthd im = mhd emh" and
  2189       "is_static dm = is_static im" 
  2189       "is_static dm = is_static im" 
  2190       "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd im)" 
  2190       "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd im)" 
  2191       by (force dest: implmt_methd)
  2191       by (force dest: implmt_methd)
  2192     with dynlookup eq_mheads
  2192     with dynlookup eq_mheads
  2193     show ?thesis 
  2193     show ?thesis 
  2194       by (cases emh type: *) (auto)
  2194       by (cases emh type: prod) (auto)
  2195   next
  2195   next
  2196     case Iface_Object_methd
  2196     case Iface_Object_methd
  2197     fix I sm
  2197     fix I sm
  2198     assume   statI: "statT = IfaceT I" and
  2198     assume   statI: "statT = IfaceT I" and
  2199                 sm: "accmethd G S Object sig = Some sm" and 
  2199                 sm: "accmethd G S Object sig = Some sm" and 
  2215          "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd sm)"  
  2215          "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd sm)"  
  2216          by (auto dest!: ws_dynmethd accmethd_SomeD 
  2216          by (auto dest!: ws_dynmethd accmethd_SomeD 
  2217                   intro: class_Object [OF wf] intro: that)
  2217                   intro: class_Object [OF wf] intro: that)
  2218        with dynlookup eq_mheads
  2218        with dynlookup eq_mheads
  2219        show ?thesis 
  2219        show ?thesis 
  2220          by (cases emh type: *) (auto)
  2220          by (cases emh type: prod) (auto)
  2221      next
  2221      next
  2222        case False
  2222        case False
  2223        with statI
  2223        with statI
  2224        have dynlookup: "dynlookup G statT dynC sig = methd G dynC sig"
  2224        have dynlookup: "dynlookup G statT dynC sig = methd G dynC sig"
  2225          by (simp add: dynlookup_def dynimethd_def)
  2225          by (simp add: dynlookup_def dynimethd_def)
  2241          "is_static dm = is_static im" 
  2241          "is_static dm = is_static im" 
  2242          "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd im)" 
  2242          "G\<turnstile>resTy (mthd dm)\<preceq>resTy (mthd im)" 
  2243          by (auto dest: implmt_methd)
  2243          by (auto dest: implmt_methd)
  2244        with wf eq_stat resProp dynlookup eq_mheads
  2244        with wf eq_stat resProp dynlookup eq_mheads
  2245        show ?thesis 
  2245        show ?thesis 
  2246          by (cases emh type: *) (auto intro: widen_trans)
  2246          by (cases emh type: prod) (auto intro: widen_trans)
  2247      qed
  2247      qed
  2248   next
  2248   next
  2249     case Array_Object_methd
  2249     case Array_Object_methd
  2250     fix T sm
  2250     fix T sm
  2251     assume statArr: "statT = ArrayT T" and
  2251     assume statArr: "statT = ArrayT T" and
  2254     from statArr dynC_Prop wf
  2254     from statArr dynC_Prop wf
  2255     have dynlookup: "dynlookup G statT dynC sig = methd G Object sig"
  2255     have dynlookup: "dynlookup G statT dynC sig = methd G Object sig"
  2256       by (auto simp add: dynlookup_def dynmethd_C_C)
  2256       by (auto simp add: dynlookup_def dynmethd_C_C)
  2257     with sm eq_mheads sm 
  2257     with sm eq_mheads sm 
  2258     show ?thesis 
  2258     show ?thesis 
  2259       by (cases emh type: *) (auto dest: accmethd_SomeD)
  2259       by (cases emh type: prod) (auto dest: accmethd_SomeD)
  2260   qed
  2260   qed
  2261 qed
  2261 qed
  2262 declare split_paired_All [simp] split_paired_Ex [simp]
  2262 declare split_paired_All [simp] split_paired_Ex [simp]
  2263 declaration {* K (Classical.map_cs (fn cs => cs addSbefore ("split_all_tac", split_all_tac))) *}
  2263 declaration {* K (Classical.map_cs (fn cs => cs addSbefore ("split_all_tac", split_all_tac))) *}
  2264 declaration {* K (Simplifier.map_ss (fn ss => ss addloop ("split_all_tac", split_all_tac))) *}
  2264 declaration {* K (Simplifier.map_ss (fn ss => ss addloop ("split_all_tac", split_all_tac))) *}