src/HOLCF/Fix.ML
changeset 430 89e1986125fe
parent 300 3fb8c0256bec
child 442 13ac1fd0a14d
equal deleted inserted replaced
429:888bbb4119f8 430:89e1986125fe
  1070 	(rtac adm_disj_lemma9 1),
  1070 	(rtac adm_disj_lemma9 1),
  1071 	(atac 1),
  1071 	(atac 1),
  1072 	(atac 1)
  1072 	(atac 1)
  1073 	]);
  1073 	]);
  1074 
  1074 
       
  1075 
       
  1076 val adm_disj_lemma11 = prove_goal Fix.thy
       
  1077 "[| adm(P); is_chain(Y); ! i. ? j. i < j & P(Y(j)) |]==>P(lub(range(Y)))"
       
  1078  (fn prems =>
       
  1079 	[
       
  1080 	(cut_facts_tac prems 1),
       
  1081 	(etac adm_disj_lemma2 1),
       
  1082 	(etac adm_disj_lemma10 1),
       
  1083 	(atac 1)
       
  1084 	]);
       
  1085 
       
  1086 val adm_disj_lemma12 = prove_goal Fix.thy
       
  1087 "[| adm(P); is_chain(Y);? i. ! j. i < j --> P(Y(j))|]==>P(lub(range(Y)))"
       
  1088  (fn prems =>
       
  1089 	[
       
  1090 	(cut_facts_tac prems 1),
       
  1091 	(etac adm_disj_lemma2 1),
       
  1092 	(etac adm_disj_lemma6 1),
       
  1093 	(atac 1)
       
  1094 	]);
       
  1095 
  1075 val adm_disj = prove_goal  Fix.thy  
  1096 val adm_disj = prove_goal  Fix.thy  
  1076 	"[| adm(P); adm(Q) |] ==> adm(%x.P(x)|Q(x))"
  1097 	"[| adm(P); adm(Q) |] ==> adm(%x.P(x)|Q(x))"
  1077  (fn prems =>
  1098  (fn prems =>
  1078 	[
  1099 	[
  1079 	(cut_facts_tac prems 1),
  1100 	(cut_facts_tac prems 1),
  1081 	(strip_tac 1),
  1102 	(strip_tac 1),
  1082 	(rtac (adm_disj_lemma1 RS disjE) 1),
  1103 	(rtac (adm_disj_lemma1 RS disjE) 1),
  1083 	(atac 1),
  1104 	(atac 1),
  1084 	(atac 1),
  1105 	(atac 1),
  1085 	(rtac disjI2 1),
  1106 	(rtac disjI2 1),
  1086 	(rtac adm_disj_lemma2 1),
  1107 	(etac adm_disj_lemma12 1),
  1087 	(atac 1),
       
  1088 	(rtac adm_disj_lemma6 1),
       
  1089 	(atac 1),
  1108 	(atac 1),
  1090 	(atac 1),
  1109 	(atac 1),
  1091 	(rtac disjI1 1),
  1110 	(rtac disjI1 1),
  1092 	(rtac adm_disj_lemma2 1),
  1111 	(etac adm_disj_lemma11 1),
  1093 	(atac 1),
  1112 	(atac 1),
  1094 	(rtac adm_disj_lemma10 1),
  1113 	(atac 1)
  1095 	(atac 1),
  1114 	]);
  1096 	(atac 1)
  1115 
  1097 	]);
       
  1098 
  1116 
  1099 val adm_impl = prove_goal  Fix.thy  
  1117 val adm_impl = prove_goal  Fix.thy  
  1100 	"[| adm(%x.~P(x)); adm(Q) |] ==> adm(%x.P(x)-->Q(x))"
  1118 	"[| adm(%x.~P(x)); adm(Q) |] ==> adm(%x.P(x)-->Q(x))"
  1101  (fn prems =>
  1119  (fn prems =>
  1102 	[
  1120 	[