equal
deleted
inserted
replaced
258 by simp |
258 by simp |
259 show ?case |
259 show ?case |
260 proof (cases "the_Bool bv") |
260 proof (cases "the_Bool bv") |
261 case True |
261 case True |
262 with Cond show ?thesis using v bv |
262 with Cond show ?thesis using v bv |
263 by (auto intro: hyp_CondL) |
263 by (auto intro: hyp_CondL) |
264 next |
264 next |
265 case False |
265 case False |
266 with Cond show ?thesis using v bv |
266 with Cond show ?thesis using v bv |
267 by (auto intro: hyp_CondR) |
267 by (auto intro: hyp_CondR) |
268 qed |
268 qed |
269 qed (simp_all) |
269 qed (simp_all) |
270 with const |
270 with const |
271 show ?thesis |
271 show ?thesis |
272 by blast |
272 by blast |
362 with const bv |
362 with const bv |
363 have "?Const b e1" by simp |
363 have "?Const b e1" by simp |
364 hence "?Ass b e1" by (rule hyp_e1) |
364 hence "?Ass b e1" by (rule hyp_e1) |
365 with emptyC bv True |
365 with emptyC bv True |
366 show ?thesis |
366 show ?thesis |
367 by simp |
367 by simp |
368 next |
368 next |
369 case False |
369 case False |
370 with const bv |
370 with const bv |
371 have "?Const b e2" by simp |
371 have "?Const b e2" by simp |
372 hence "?Ass b e2" by (rule hyp_e2) |
372 hence "?Ass b e2" by (rule hyp_e2) |
373 with emptyC bv False |
373 with emptyC bv False |
374 show ?thesis |
374 show ?thesis |
375 by simp |
375 by simp |
376 qed |
376 qed |
377 qed (simp_all) |
377 qed (simp_all) |
378 with boolConst |
378 with boolConst |
379 show ?thesis |
379 show ?thesis |
380 by blast |
380 by blast |
409 with const bv |
409 with const bv |
410 have "?Const b e1" by simp |
410 have "?Const b e1" by simp |
411 hence "?Ass b e1" by (rule hyp_e1) |
411 hence "?Ass b e1" by (rule hyp_e1) |
412 with bv True |
412 with bv True |
413 show ?thesis |
413 show ?thesis |
414 by simp |
414 by simp |
415 next |
415 next |
416 case False |
416 case False |
417 with const bv |
417 with const bv |
418 have "?Const b e2" by simp |
418 have "?Const b e2" by simp |
419 hence "?Ass b e2" by (rule hyp_e2) |
419 hence "?Ass b e2" by (rule hyp_e2) |
420 with bv False |
420 with bv False |
421 show ?thesis |
421 show ?thesis |
422 by simp |
422 by simp |
423 qed |
423 qed |
424 qed (simp_all) |
424 qed (simp_all) |
425 with boolConst |
425 with boolConst |
426 show ?thesis |
426 show ?thesis |
427 by blast |
427 by blast |
957 have "E\<turnstile>e\<Colon>- (PrimT Boolean)" |
957 have "E\<turnstile>e\<Colon>- (PrimT Boolean)" |
958 proof - |
958 proof - |
959 from `E\<turnstile>(Cast T e)\<Colon>- (PrimT Boolean)` |
959 from `E\<turnstile>(Cast T e)\<Colon>- (PrimT Boolean)` |
960 obtain Te where "E\<turnstile>e\<Colon>-Te" |
960 obtain Te where "E\<turnstile>e\<Colon>-Te" |
961 "prg E\<turnstile>Te\<preceq>? PrimT Boolean" |
961 "prg E\<turnstile>Te\<preceq>? PrimT Boolean" |
962 by cases simp |
962 by cases simp |
963 thus ?thesis |
963 thus ?thesis |
964 by - (drule cast_Boolean2,simp) |
964 by - (drule cast_Boolean2,simp) |
965 qed |
965 qed |
966 with Cast.hyps |
966 with Cast.hyps |
967 show ?case |
967 show ?case |
968 by simp |
968 by simp |
969 next |
969 next |
970 case (Lit val) |
970 case (Lit val) |
971 thus ?case |
971 thus ?case |
972 by - (erule wt_elim_cases, cases "val", auto simp add: empty_dt_def) |
972 by - (erule wt_elim_cases, cases "val", auto simp add: empty_dt_def) |
973 next |
973 next |
974 case (UnOp unop e) |
974 case (UnOp unop e) |
998 show ?case |
998 show ?case |
999 proof (cases "constVal c") |
999 proof (cases "constVal c") |
1000 case None |
1000 case None |
1001 with boolean_e1 boolean_e2 |
1001 with boolean_e1 boolean_e2 |
1002 show ?thesis |
1002 show ?thesis |
1003 using hyp_e1 hyp_e2 |
1003 using hyp_e1 hyp_e2 |
1004 by (auto) |
1004 by (auto) |
1005 next |
1005 next |
1006 case (Some bv) |
1006 case (Some bv) |
1007 show ?thesis |
1007 show ?thesis |
1008 proof (cases "the_Bool bv") |
1008 proof (cases "the_Bool bv") |
1009 case True |
1009 case True |
1010 with Some show ?thesis using hyp_e1 boolean_e1 by auto |
1010 with Some show ?thesis using hyp_e1 boolean_e1 by auto |
1011 next |
1011 next |
1012 case False |
1012 case False |
1013 with Some show ?thesis using hyp_e2 boolean_e2 by auto |
1013 with Some show ?thesis using hyp_e2 boolean_e2 by auto |
1014 qed |
1014 qed |
1015 qed |
1015 qed |
1016 qed simp_all |
1016 qed simp_all |
1017 with boolEx |
1017 with boolEx |
1018 show ?thesis |
1018 show ?thesis |
1083 moreover |
1083 moreover |
1084 { |
1084 { |
1085 fix l' |
1085 fix l' |
1086 from hyp_brk |
1086 from hyp_brk |
1087 have "rmlab l (brk C) l' \<subseteq> rmlab l (brk C') l'" |
1087 have "rmlab l (brk C) l' \<subseteq> rmlab l (brk C') l'" |
1088 by (cases "l=l'") simp_all |
1088 by (cases "l=l'") simp_all |
1089 } |
1089 } |
1090 moreover note A A' |
1090 moreover note A A' |
1091 ultimately show ?case |
1091 ultimately show ?case |
1092 by simp |
1092 by simp |
1093 next |
1093 next |
1152 by blast |
1152 by blast |
1153 moreover |
1153 moreover |
1154 { fix l' |
1154 { fix l' |
1155 have "brk A l' \<subseteq> brk A' l'" |
1155 have "brk A l' \<subseteq> brk A' l'" |
1156 proof (cases "constVal e") |
1156 proof (cases "constVal e") |
1157 case None |
1157 case None |
1158 with A A' C' |
1158 with A A' C' |
1159 show ?thesis |
1159 show ?thesis |
1160 by (cases "l=l'") auto |
1160 by (cases "l=l'") auto |
1161 next |
1161 next |
1162 case (Some bv) |
1162 case (Some bv) |
1163 with A A' C' |
1163 with A A' C' |
1164 show ?thesis |
1164 show ?thesis |
1165 by (cases "the_Bool bv", cases "l=l'") auto |
1165 by (cases "the_Bool bv", cases "l=l'") auto |
1166 qed |
1166 qed |
1167 } |
1167 } |
1168 ultimately show ?case |
1168 ultimately show ?case |
1169 by auto |
1169 by auto |
1170 next |
1170 next |
1379 moreover |
1379 moreover |
1380 obtain C1' where "Env\<turnstile> (B' \<union> assigns_if True e) \<guillemotright>\<langle>c1\<rangle>\<guillemotright> C1'" |
1380 obtain C1' where "Env\<turnstile> (B' \<union> assigns_if True e) \<guillemotright>\<langle>c1\<rangle>\<guillemotright> C1'" |
1381 proof - |
1381 proof - |
1382 from B' |
1382 from B' |
1383 have "(B \<union> assigns_if True e) \<subseteq> (B' \<union> assigns_if True e)" |
1383 have "(B \<union> assigns_if True e) \<subseteq> (B' \<union> assigns_if True e)" |
1384 by blast |
1384 by blast |
1385 moreover |
1385 moreover |
1386 have "PROP ?Hyp Env (B \<union> assigns_if True e) \<langle>c1\<rangle>" by (rule If.hyps) |
1386 have "PROP ?Hyp Env (B \<union> assigns_if True e) \<langle>c1\<rangle>" by (rule If.hyps) |
1387 ultimately |
1387 ultimately |
1388 show ?thesis using that by iprover |
1388 show ?thesis using that by iprover |
1389 qed |
1389 qed |
1390 moreover |
1390 moreover |
1391 obtain C2' where "Env\<turnstile> (B' \<union> assigns_if False e) \<guillemotright>\<langle>c2\<rangle>\<guillemotright> C2'" |
1391 obtain C2' where "Env\<turnstile> (B' \<union> assigns_if False e) \<guillemotright>\<langle>c2\<rangle>\<guillemotright> C2'" |
1392 proof - |
1392 proof - |
1393 from B' have "(B \<union> assigns_if False e) \<subseteq> (B' \<union> assigns_if False e)" |
1393 from B' have "(B \<union> assigns_if False e) \<subseteq> (B' \<union> assigns_if False e)" |
1394 by blast |
1394 by blast |
1395 moreover |
1395 moreover |
1396 have "PROP ?Hyp Env (B \<union> assigns_if False e) \<langle>c2\<rangle>" by (rule If.hyps) |
1396 have "PROP ?Hyp Env (B \<union> assigns_if False e) \<langle>c2\<rangle>" by (rule If.hyps) |
1397 ultimately |
1397 ultimately |
1398 show ?thesis using that by iprover |
1398 show ?thesis using that by iprover |
1399 qed |
1399 qed |
1413 moreover |
1413 moreover |
1414 obtain C' where "Env\<turnstile> (B' \<union> assigns_if True e) \<guillemotright>\<langle>c\<rangle>\<guillemotright> C'" |
1414 obtain C' where "Env\<turnstile> (B' \<union> assigns_if True e) \<guillemotright>\<langle>c\<rangle>\<guillemotright> C'" |
1415 proof - |
1415 proof - |
1416 from B' |
1416 from B' |
1417 have "(B \<union> assigns_if True e) \<subseteq> (B' \<union> assigns_if True e)" |
1417 have "(B \<union> assigns_if True e) \<subseteq> (B' \<union> assigns_if True e)" |
1418 by blast |
1418 by blast |
1419 moreover |
1419 moreover |
1420 have "PROP ?Hyp Env (B \<union> assigns_if True e) \<langle>c\<rangle>" by (rule Loop.hyps) |
1420 have "PROP ?Hyp Env (B \<union> assigns_if True e) \<langle>c\<rangle>" by (rule Loop.hyps) |
1421 ultimately |
1421 ultimately |
1422 show ?thesis using that by iprover |
1422 show ?thesis using that by iprover |
1423 qed |
1423 qed |
1459 proof - |
1459 proof - |
1460 from B' have "B \<union> {VName vn} \<subseteq> B' \<union> {VName vn}" by blast |
1460 from B' have "B \<union> {VName vn} \<subseteq> B' \<union> {VName vn}" by blast |
1461 moreover |
1461 moreover |
1462 have "PROP ?Hyp (Env\<lparr>lcl := lcl Env(VName vn\<mapsto>Class C)\<rparr>) |
1462 have "PROP ?Hyp (Env\<lparr>lcl := lcl Env(VName vn\<mapsto>Class C)\<rparr>) |
1463 (B \<union> {VName vn}) \<langle>c2\<rangle>" |
1463 (B \<union> {VName vn}) \<langle>c2\<rangle>" |
1464 by (rule Try.hyps) |
1464 by (rule Try.hyps) |
1465 ultimately |
1465 ultimately |
1466 show ?thesis using that by iprover |
1466 show ?thesis using that by iprover |
1467 qed |
1467 qed |
1468 ultimately |
1468 ultimately |
1469 obtain A' where "Env\<turnstile> B' \<guillemotright>\<langle>Try c1 Catch(C vn) c2\<rangle>\<guillemotright> A'" |
1469 obtain A' where "Env\<turnstile> B' \<guillemotright>\<langle>Try c1 Catch(C vn) c2\<rangle>\<guillemotright> A'" |
1514 qed |
1514 qed |
1515 moreover |
1515 moreover |
1516 obtain E2' where "Env\<turnstile> B' \<union> assigns_if True e1 \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1516 obtain E2' where "Env\<turnstile> B' \<union> assigns_if True e1 \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1517 proof - |
1517 proof - |
1518 from B' have "B \<union> assigns_if True e1 \<subseteq> B' \<union> assigns_if True e1" |
1518 from B' have "B \<union> assigns_if True e1 \<subseteq> B' \<union> assigns_if True e1" |
1519 by blast |
1519 by blast |
1520 moreover |
1520 moreover |
1521 have "PROP ?Hyp Env (B \<union> assigns_if True e1) \<langle>e2\<rangle>" by (rule CondAnd.hyps) |
1521 have "PROP ?Hyp Env (B \<union> assigns_if True e1) \<langle>e2\<rangle>" by (rule CondAnd.hyps) |
1522 ultimately show ?thesis using that by iprover |
1522 ultimately show ?thesis using that by iprover |
1523 qed |
1523 qed |
1524 ultimately |
1524 ultimately |
1536 qed |
1536 qed |
1537 moreover |
1537 moreover |
1538 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False e1 \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1538 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False e1 \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1539 proof - |
1539 proof - |
1540 from B' have "B \<union> assigns_if False e1 \<subseteq> B' \<union> assigns_if False e1" |
1540 from B' have "B \<union> assigns_if False e1 \<subseteq> B' \<union> assigns_if False e1" |
1541 by blast |
1541 by blast |
1542 moreover |
1542 moreover |
1543 have "PROP ?Hyp Env (B \<union> assigns_if False e1) \<langle>e2\<rangle>" by (rule CondOr.hyps) |
1543 have "PROP ?Hyp Env (B \<union> assigns_if False e1) \<langle>e2\<rangle>" by (rule CondOr.hyps) |
1544 ultimately show ?thesis using that by iprover |
1544 ultimately show ?thesis using that by iprover |
1545 qed |
1545 qed |
1546 ultimately |
1546 ultimately |
1560 obtain A' where "Env\<turnstile> nrm E1' \<guillemotright>\<langle>e2\<rangle>\<guillemotright> A'" |
1560 obtain A' where "Env\<turnstile> nrm E1' \<guillemotright>\<langle>e2\<rangle>\<guillemotright> A'" |
1561 proof - |
1561 proof - |
1562 have "Env\<turnstile> B \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1" by (rule BinOp.hyps) |
1562 have "Env\<turnstile> B \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1" by (rule BinOp.hyps) |
1563 from this B' E1' |
1563 from this B' E1' |
1564 have "nrm E1 \<subseteq> nrm E1'" |
1564 have "nrm E1 \<subseteq> nrm E1'" |
1565 by (rule da_monotone [THEN conjE]) |
1565 by (rule da_monotone [THEN conjE]) |
1566 moreover |
1566 moreover |
1567 have "PROP ?Hyp Env (nrm E1) \<langle>e2\<rangle>" by (rule BinOp.hyps) |
1567 have "PROP ?Hyp Env (nrm E1) \<langle>e2\<rangle>" by (rule BinOp.hyps) |
1568 ultimately show ?thesis using that by iprover |
1568 ultimately show ?thesis using that by iprover |
1569 qed |
1569 qed |
1570 ultimately |
1570 ultimately |
1610 obtain A' where "Env\<turnstile> nrm V' \<guillemotright>\<langle>e\<rangle>\<guillemotright> A'" |
1610 obtain A' where "Env\<turnstile> nrm V' \<guillemotright>\<langle>e\<rangle>\<guillemotright> A'" |
1611 proof - |
1611 proof - |
1612 have "Env\<turnstile> B \<guillemotright>\<langle>v\<rangle>\<guillemotright> V" by (rule Ass.hyps) |
1612 have "Env\<turnstile> B \<guillemotright>\<langle>v\<rangle>\<guillemotright> V" by (rule Ass.hyps) |
1613 from this B' V' |
1613 from this B' V' |
1614 have "nrm V \<subseteq> nrm V'" |
1614 have "nrm V \<subseteq> nrm V'" |
1615 by (rule da_monotone [THEN conjE]) |
1615 by (rule da_monotone [THEN conjE]) |
1616 moreover |
1616 moreover |
1617 have "PROP ?Hyp Env (nrm V) \<langle>e\<rangle>" by (rule Ass.hyps) |
1617 have "PROP ?Hyp Env (nrm V) \<langle>e\<rangle>" by (rule Ass.hyps) |
1618 ultimately show ?thesis using that by iprover |
1618 ultimately show ?thesis using that by iprover |
1619 qed |
1619 qed |
1620 ultimately |
1620 ultimately |
1634 moreover |
1634 moreover |
1635 obtain E1' where "Env\<turnstile> B' \<union> assigns_if True c \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1'" |
1635 obtain E1' where "Env\<turnstile> B' \<union> assigns_if True c \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1'" |
1636 proof - |
1636 proof - |
1637 from B' |
1637 from B' |
1638 have "(B \<union> assigns_if True c) \<subseteq> (B' \<union> assigns_if True c)" |
1638 have "(B \<union> assigns_if True c) \<subseteq> (B' \<union> assigns_if True c)" |
1639 by blast |
1639 by blast |
1640 moreover |
1640 moreover |
1641 have "PROP ?Hyp Env (B \<union> assigns_if True c) \<langle>e1\<rangle>" by (rule CondBool.hyps) |
1641 have "PROP ?Hyp Env (B \<union> assigns_if True c) \<langle>e1\<rangle>" by (rule CondBool.hyps) |
1642 ultimately |
1642 ultimately |
1643 show ?thesis using that by iprover |
1643 show ?thesis using that by iprover |
1644 qed |
1644 qed |
1645 moreover |
1645 moreover |
1646 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False c \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1646 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False c \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1647 proof - |
1647 proof - |
1648 from B' |
1648 from B' |
1649 have "(B \<union> assigns_if False c) \<subseteq> (B' \<union> assigns_if False c)" |
1649 have "(B \<union> assigns_if False c) \<subseteq> (B' \<union> assigns_if False c)" |
1650 by blast |
1650 by blast |
1651 moreover |
1651 moreover |
1652 have "PROP ?Hyp Env (B \<union> assigns_if False c) \<langle>e2\<rangle>" by(rule CondBool.hyps) |
1652 have "PROP ?Hyp Env (B \<union> assigns_if False c) \<langle>e2\<rangle>" by(rule CondBool.hyps) |
1653 ultimately |
1653 ultimately |
1654 show ?thesis using that by iprover |
1654 show ?thesis using that by iprover |
1655 qed |
1655 qed |
1670 moreover |
1670 moreover |
1671 obtain E1' where "Env\<turnstile> B' \<union> assigns_if True c \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1'" |
1671 obtain E1' where "Env\<turnstile> B' \<union> assigns_if True c \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1'" |
1672 proof - |
1672 proof - |
1673 from B' |
1673 from B' |
1674 have "(B \<union> assigns_if True c) \<subseteq> (B' \<union> assigns_if True c)" |
1674 have "(B \<union> assigns_if True c) \<subseteq> (B' \<union> assigns_if True c)" |
1675 by blast |
1675 by blast |
1676 moreover |
1676 moreover |
1677 have "PROP ?Hyp Env (B \<union> assigns_if True c) \<langle>e1\<rangle>" by (rule Cond.hyps) |
1677 have "PROP ?Hyp Env (B \<union> assigns_if True c) \<langle>e1\<rangle>" by (rule Cond.hyps) |
1678 ultimately |
1678 ultimately |
1679 show ?thesis using that by iprover |
1679 show ?thesis using that by iprover |
1680 qed |
1680 qed |
1681 moreover |
1681 moreover |
1682 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False c \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1682 obtain E2' where "Env\<turnstile> B' \<union> assigns_if False c \<guillemotright>\<langle>e2\<rangle>\<guillemotright> E2'" |
1683 proof - |
1683 proof - |
1684 from B' |
1684 from B' |
1685 have "(B \<union> assigns_if False c) \<subseteq> (B' \<union> assigns_if False c)" |
1685 have "(B \<union> assigns_if False c) \<subseteq> (B' \<union> assigns_if False c)" |
1686 by blast |
1686 by blast |
1687 moreover |
1687 moreover |
1688 have "PROP ?Hyp Env (B \<union> assigns_if False c) \<langle>e2\<rangle>" by (rule Cond.hyps) |
1688 have "PROP ?Hyp Env (B \<union> assigns_if False c) \<langle>e2\<rangle>" by (rule Cond.hyps) |
1689 ultimately |
1689 ultimately |
1690 show ?thesis using that by iprover |
1690 show ?thesis using that by iprover |
1691 qed |
1691 qed |
1706 obtain A' where "Env\<turnstile> nrm E' \<guillemotright>\<langle>args\<rangle>\<guillemotright> A'" |
1706 obtain A' where "Env\<turnstile> nrm E' \<guillemotright>\<langle>args\<rangle>\<guillemotright> A'" |
1707 proof - |
1707 proof - |
1708 have "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> E" by (rule Call.hyps) |
1708 have "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> E" by (rule Call.hyps) |
1709 from this B' E' |
1709 from this B' E' |
1710 have "nrm E \<subseteq> nrm E'" |
1710 have "nrm E \<subseteq> nrm E'" |
1711 by (rule da_monotone [THEN conjE]) |
1711 by (rule da_monotone [THEN conjE]) |
1712 moreover |
1712 moreover |
1713 have "PROP ?Hyp Env (nrm E) \<langle>args\<rangle>" by (rule Call.hyps) |
1713 have "PROP ?Hyp Env (nrm E) \<langle>args\<rangle>" by (rule Call.hyps) |
1714 ultimately show ?thesis using that by iprover |
1714 ultimately show ?thesis using that by iprover |
1715 qed |
1715 qed |
1716 ultimately |
1716 ultimately |
1726 proof - |
1726 proof - |
1727 have "Env\<turnstile> B \<guillemotright>\<langle>c\<rangle>\<guillemotright> C" by (rule Body.hyps) |
1727 have "Env\<turnstile> B \<guillemotright>\<langle>c\<rangle>\<guillemotright> C" by (rule Body.hyps) |
1728 moreover note B' |
1728 moreover note B' |
1729 moreover |
1729 moreover |
1730 from B' obtain C' where da_c: "Env\<turnstile> B' \<guillemotright>\<langle>c\<rangle>\<guillemotright> C'" |
1730 from B' obtain C' where da_c: "Env\<turnstile> B' \<guillemotright>\<langle>c\<rangle>\<guillemotright> C'" |
1731 by (rule Body.hyps [elim_format]) blast |
1731 by (rule Body.hyps [elim_format]) blast |
1732 ultimately |
1732 ultimately |
1733 have "nrm C \<subseteq> nrm C'" |
1733 have "nrm C \<subseteq> nrm C'" |
1734 by (rule da_monotone [THEN conjE]) |
1734 by (rule da_monotone [THEN conjE]) |
1735 with da_c that show ?thesis by iprover |
1735 with da_c that show ?thesis by iprover |
1736 qed |
1736 qed |
1737 moreover |
1737 moreover |
1738 note `Result \<in> nrm C` |
1738 note `Result \<in> nrm C` |
1739 with nrm_C' have "Result \<in> nrm C'" |
1739 with nrm_C' have "Result \<in> nrm C'" |
1760 obtain A' where "Env\<turnstile> nrm E1' \<guillemotright>\<langle>e2\<rangle>\<guillemotright> A'" |
1760 obtain A' where "Env\<turnstile> nrm E1' \<guillemotright>\<langle>e2\<rangle>\<guillemotright> A'" |
1761 proof - |
1761 proof - |
1762 have "Env\<turnstile> B \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1" by (rule AVar.hyps) |
1762 have "Env\<turnstile> B \<guillemotright>\<langle>e1\<rangle>\<guillemotright> E1" by (rule AVar.hyps) |
1763 from this B' E1' |
1763 from this B' E1' |
1764 have "nrm E1 \<subseteq> nrm E1'" |
1764 have "nrm E1 \<subseteq> nrm E1'" |
1765 by (rule da_monotone [THEN conjE]) |
1765 by (rule da_monotone [THEN conjE]) |
1766 moreover |
1766 moreover |
1767 have "PROP ?Hyp Env (nrm E1) \<langle>e2\<rangle>" by (rule AVar.hyps) |
1767 have "PROP ?Hyp Env (nrm E1) \<langle>e2\<rangle>" by (rule AVar.hyps) |
1768 ultimately show ?thesis using that by iprover |
1768 ultimately show ?thesis using that by iprover |
1769 qed |
1769 qed |
1770 ultimately |
1770 ultimately |
1786 obtain A' where "Env\<turnstile> nrm E' \<guillemotright>\<langle>es\<rangle>\<guillemotright> A'" |
1786 obtain A' where "Env\<turnstile> nrm E' \<guillemotright>\<langle>es\<rangle>\<guillemotright> A'" |
1787 proof - |
1787 proof - |
1788 have "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> E" by (rule Cons.hyps) |
1788 have "Env\<turnstile> B \<guillemotright>\<langle>e\<rangle>\<guillemotright> E" by (rule Cons.hyps) |
1789 from this B' E' |
1789 from this B' E' |
1790 have "nrm E \<subseteq> nrm E'" |
1790 have "nrm E \<subseteq> nrm E'" |
1791 by (rule da_monotone [THEN conjE]) |
1791 by (rule da_monotone [THEN conjE]) |
1792 moreover |
1792 moreover |
1793 have "PROP ?Hyp Env (nrm E) \<langle>es\<rangle>" by (rule Cons.hyps) |
1793 have "PROP ?Hyp Env (nrm E) \<langle>es\<rangle>" by (rule Cons.hyps) |
1794 ultimately show ?thesis using that by iprover |
1794 ultimately show ?thesis using that by iprover |
1795 qed |
1795 qed |
1796 ultimately |
1796 ultimately |