equal
deleted
inserted
replaced
688 fast_tac ((HOL_cs addSIs [flatdom2monofun, |
688 fast_tac ((HOL_cs addSIs [flatdom2monofun, |
689 flat_imp_chain_finite RS chfindom_monofun2cont])) 1 |
689 flat_imp_chain_finite RS chfindom_monofun2cont])) 1 |
690 ]); |
690 ]); |
691 |
691 |
692 qed_goal "chfin_fappR" thy |
692 qed_goal "chfin_fappR" thy |
693 "[| is_chain (Y::nat => 'a->'b); chain_finite(x::'b) |] ==> \ |
693 "[| is_chain (Y::nat => 'a::cpo->'b); chain_finite(x::'b) |] ==> \ |
694 \ !s. ? n. lub(range(Y))`s = Y n`s" |
694 \ !s. ? n. lub(range(Y))`s = Y n`s" |
695 (fn prems => |
695 (fn prems => |
696 [ |
696 [ |
697 cut_facts_tac prems 1, |
697 cut_facts_tac prems 1, |
698 rtac allI 1, |
698 rtac allI 1, |
700 atac 1, |
700 atac 1, |
701 fast_tac (HOL_cs addSIs [thelubI,lub_finch2,chfin2finch,ch2ch_fappL])1 |
701 fast_tac (HOL_cs addSIs [thelubI,lub_finch2,chfin2finch,ch2ch_fappL])1 |
702 ]); |
702 ]); |
703 |
703 |
704 qed_goalw "adm_chfindom" thy [adm_def] |
704 qed_goalw "adm_chfindom" thy [adm_def] |
705 "chain_finite (x::'b) ==> adm (%(u::'a->'b). P(u`s))" (fn prems => [ |
705 "chain_finite (x::'b) ==> adm (%(u::'a::cpo->'b). P(u`s))" |
|
706 (fn prems => [ |
706 cut_facts_tac prems 1, |
707 cut_facts_tac prems 1, |
707 strip_tac 1, |
708 strip_tac 1, |
708 dtac chfin_fappR 1, |
709 dtac chfin_fappR 1, |
709 atac 1, |
710 atac 1, |
710 eres_inst_tac [("x","s")] allE 1, |
711 eres_inst_tac [("x","s")] allE 1, |
1093 etac mp 1, |
1094 etac mp 1, |
1094 trans_tac 1 |
1095 trans_tac 1 |
1095 ]); |
1096 ]); |
1096 |
1097 |
1097 val adm_disj_lemma5 = prove_goal thy |
1098 val adm_disj_lemma5 = prove_goal thy |
1098 "!!Y::nat=>'a. [| is_chain(Y); ! j. i < j --> Q(Y(j)) |] ==>\ |
1099 "!!Y::nat=>'a::cpo. [| is_chain(Y); ! j. i < j --> Q(Y(j)) |] ==>\ |
1099 \ lub(range(Y)) = lub(range(%m. if m< Suc(i) then Y(Suc(i)) else Y m))" |
1100 \ lub(range(Y)) = lub(range(%m. if m< Suc(i) then Y(Suc(i)) else Y m))" |
1100 (fn prems => |
1101 (fn prems => |
1101 [ |
1102 [ |
1102 safe_tac (HOL_cs addSIs [lub_equal2,adm_disj_lemma3]), |
1103 safe_tac (HOL_cs addSIs [lub_equal2,adm_disj_lemma3]), |
1103 atac 2, |
1104 atac 2, |
1106 strip_tac 1, |
1107 strip_tac 1, |
1107 trans_tac 1 |
1108 trans_tac 1 |
1108 ]); |
1109 ]); |
1109 |
1110 |
1110 val adm_disj_lemma6 = prove_goal thy |
1111 val adm_disj_lemma6 = prove_goal thy |
1111 "[| is_chain(Y::nat=>'a); ? i. ! j. i < j --> Q(Y(j)) |] ==>\ |
1112 "[| is_chain(Y::nat=>'a::cpo); ? i. ! j. i < j --> Q(Y(j)) |] ==>\ |
1112 \ ? X. is_chain(X) & (! n. Q(X(n))) & lub(range(Y)) = lub(range(X))" |
1113 \ ? X. is_chain(X) & (! n. Q(X(n))) & lub(range(Y)) = lub(range(X))" |
1113 (fn prems => |
1114 (fn prems => |
1114 [ |
1115 [ |
1115 (cut_facts_tac prems 1), |
1116 (cut_facts_tac prems 1), |
1116 (etac exE 1), |
1117 (etac exE 1), |
1125 (atac 1), |
1126 (atac 1), |
1126 (atac 1) |
1127 (atac 1) |
1127 ]); |
1128 ]); |
1128 |
1129 |
1129 val adm_disj_lemma7 = prove_goal thy |
1130 val adm_disj_lemma7 = prove_goal thy |
1130 "[| is_chain(Y::nat=>'a); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1131 "[| is_chain(Y::nat=>'a::cpo); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1131 \ is_chain(%m. Y(Least(%j. m<j & P(Y(j)))))" |
1132 \ is_chain(%m. Y(Least(%j. m<j & P(Y(j)))))" |
1132 (fn prems => |
1133 (fn prems => |
1133 [ |
1134 [ |
1134 (cut_facts_tac prems 1), |
1135 (cut_facts_tac prems 1), |
1135 (rtac is_chainI 1), |
1136 (rtac is_chainI 1), |
1159 (etac exE 1), |
1160 (etac exE 1), |
1160 (etac (LeastI RS conjunct2) 1) |
1161 (etac (LeastI RS conjunct2) 1) |
1161 ]); |
1162 ]); |
1162 |
1163 |
1163 val adm_disj_lemma9 = prove_goal thy |
1164 val adm_disj_lemma9 = prove_goal thy |
1164 "[| is_chain(Y::nat=>'a); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1165 "[| is_chain(Y::nat=>'a::cpo); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1165 \ lub(range(Y)) = lub(range(%m. Y(Least(%j. m<j & P(Y(j))))))" |
1166 \ lub(range(Y)) = lub(range(%m. Y(Least(%j. m<j & P(Y(j))))))" |
1166 (fn prems => |
1167 (fn prems => |
1167 [ |
1168 [ |
1168 (cut_facts_tac prems 1), |
1169 (cut_facts_tac prems 1), |
1169 (rtac antisym_less 1), |
1170 (rtac antisym_less 1), |
1190 (atac 1), |
1191 (atac 1), |
1191 (rtac lessI 1) |
1192 (rtac lessI 1) |
1192 ]); |
1193 ]); |
1193 |
1194 |
1194 val adm_disj_lemma10 = prove_goal thy |
1195 val adm_disj_lemma10 = prove_goal thy |
1195 "[| is_chain(Y::nat=>'a); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1196 "[| is_chain(Y::nat=>'a::cpo); ! i. ? j. i < j & P(Y(j)) |] ==>\ |
1196 \ ? X. is_chain(X) & (! n. P(X(n))) & lub(range(Y)) = lub(range(X))" |
1197 \ ? X. is_chain(X) & (! n. P(X(n))) & lub(range(Y)) = lub(range(X))" |
1197 (fn prems => |
1198 (fn prems => |
1198 [ |
1199 [ |
1199 (cut_facts_tac prems 1), |
1200 (cut_facts_tac prems 1), |
1200 (res_inst_tac [("x","%m. Y(Least(%j. m<j & P(Y(j))))")] exI 1), |
1201 (res_inst_tac [("x","%m. Y(Least(%j. m<j & P(Y(j))))")] exI 1), |