src/ZF/Fixedpt.ML
changeset 3016 15763781afb0
parent 2469 b50b8c0eec01
child 5067 62b6288e6005
equal deleted inserted replaced
3015:65778b9d865f 3016:15763781afb0
    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);