equal
deleted
inserted
replaced
54 (**** Proof of Knaster-Tarski Theorem for the lfp ****) |
54 (**** Proof of Knaster-Tarski Theorem for the lfp ****) |
55 |
55 |
56 (*lfp is contained in each pre-fixedpoint*) |
56 (*lfp is contained in each pre-fixedpoint*) |
57 goalw Fixedpt.thy [lfp_def] |
57 goalw Fixedpt.thy [lfp_def] |
58 "!!A. [| h(A) <= A; A<=D |] ==> lfp(D,h) <= A"; |
58 "!!A. [| h(A) <= A; A<=D |] ==> lfp(D,h) <= A"; |
59 by (Fast_tac 1); |
59 by (Blast_tac 1); |
60 (*or by (rtac (PowI RS CollectI RS Inter_lower) 1); *) |
60 (*or by (rtac (PowI RS CollectI RS Inter_lower) 1); *) |
61 qed "lfp_lowerbound"; |
61 qed "lfp_lowerbound"; |
62 |
62 |
63 (*Unfolding the defn of Inter dispenses with the premise bnd_mono(D,h)!*) |
63 (*Unfolding the defn of Inter dispenses with the premise bnd_mono(D,h)!*) |
64 goalw Fixedpt.thy [lfp_def,Inter_def] "lfp(D,h) <= D"; |
64 goalw Fixedpt.thy [lfp_def,Inter_def] "lfp(D,h) <= D"; |
65 by (Fast_tac 1); |
65 by (Blast_tac 1); |
66 qed "lfp_subset"; |
66 qed "lfp_subset"; |
67 |
67 |
68 (*Used in datatype package*) |
68 (*Used in datatype package*) |
69 val [rew] = goal Fixedpt.thy "A==lfp(D,h) ==> A <= D"; |
69 val [rew] = goal Fixedpt.thy "A==lfp(D,h) ==> A <= D"; |
70 by (rewtac rew); |
70 by (rewtac rew); |
188 by (rtac (PowI RS CollectI RS Union_upper) 1); |
188 by (rtac (PowI RS CollectI RS Union_upper) 1); |
189 by (REPEAT (resolve_tac prems 1)); |
189 by (REPEAT (resolve_tac prems 1)); |
190 qed "gfp_upperbound"; |
190 qed "gfp_upperbound"; |
191 |
191 |
192 goalw Fixedpt.thy [gfp_def] "gfp(D,h) <= D"; |
192 goalw Fixedpt.thy [gfp_def] "gfp(D,h) <= D"; |
193 by (Fast_tac 1); |
193 by (Blast_tac 1); |
194 qed "gfp_subset"; |
194 qed "gfp_subset"; |
195 |
195 |
196 (*Used in datatype package*) |
196 (*Used in datatype package*) |
197 val [rew] = goal Fixedpt.thy "A==gfp(D,h) ==> A <= D"; |
197 val [rew] = goal Fixedpt.thy "A==gfp(D,h) ==> A <= D"; |
198 by (rewtac rew); |
198 by (rewtac rew); |