equal
deleted
inserted
replaced
21 |
21 |
22 definition lfp :: "('a \<Rightarrow> 'a) \<Rightarrow> 'a" |
22 definition lfp :: "('a \<Rightarrow> 'a) \<Rightarrow> 'a" |
23 where "lfp f = Inf {u. f u \<le> u}" |
23 where "lfp f = Inf {u. f u \<le> u}" |
24 |
24 |
25 lemma lfp_lowerbound: "f A \<le> A \<Longrightarrow> lfp f \<le> A" |
25 lemma lfp_lowerbound: "f A \<le> A \<Longrightarrow> lfp f \<le> A" |
26 by (auto simp add: lfp_def intro: Inf_lower) |
26 unfolding lfp_def by (rule Inf_lower) simp |
27 |
27 |
28 lemma lfp_greatest: "(\<And>u. f u \<le> u \<Longrightarrow> A \<le> u) \<Longrightarrow> A \<le> lfp f" |
28 lemma lfp_greatest: "(\<And>u. f u \<le> u \<Longrightarrow> A \<le> u) \<Longrightarrow> A \<le> lfp f" |
29 by (auto simp add: lfp_def intro: Inf_greatest) |
29 unfolding lfp_def by (rule Inf_greatest) simp |
30 |
30 |
31 end |
31 end |
32 |
32 |
33 lemma lfp_fixpoint: |
33 lemma lfp_fixpoint: |
34 assumes "mono f" |
34 assumes "mono f" |