# HG changeset patch # User huffman # Date 1286838855 25200 # Node ID 9c6ad000dc890923d775d7440213e040d8975703 # Parent e3948547b541fb5d71edc0f5a679ef89de40047d remove unused constant 'directed' diff -r e3948547b541 -r 9c6ad000dc89 src/HOLCF/Porder.thy --- a/src/HOLCF/Porder.thy Mon Oct 11 09:54:04 2010 -0700 +++ b/src/HOLCF/Porder.thy Mon Oct 11 16:14:15 2010 -0700 @@ -344,87 +344,6 @@ lemma lub_chain_maxelem: "\Y i = c; \i. Y i \ c\ \ lub (range Y) = c" by (blast dest: ub_rangeD intro: thelubI is_lubI ub_rangeI) -subsection {* Directed sets *} - -definition directed :: "'a set \ bool" where - "directed S \ (\x. x \ S) \ (\x\S. \y\S. \z\S. x \ z \ y \ z)" - -lemma directedI: - assumes 1: "\z. z \ S" - assumes 2: "\x y. \x \ S; y \ S\ \ \z\S. x \ z \ y \ z" - shows "directed S" - unfolding directed_def using prems by fast - -lemma directedD1: "directed S \ \z. z \ S" - unfolding directed_def by fast - -lemma directedD2: "\directed S; x \ S; y \ S\ \ \z\S. x \ z \ y \ z" - unfolding directed_def by fast - -lemma directedE1: - assumes S: "directed S" - obtains z where "z \ S" - by (insert directedD1 [OF S], fast) - -lemma directedE2: - assumes S: "directed S" - assumes x: "x \ S" and y: "y \ S" - obtains z where "z \ S" "x \ z" "y \ z" - by (insert directedD2 [OF S x y], fast) - -lemma directed_finiteI: - assumes U: "\U. \finite U; U \ S\ \ \z\S. U <| z" - shows "directed S" -proof (rule directedI) - have "finite {}" and "{} \ S" by simp_all - hence "\z\S. {} <| z" by (rule U) - thus "\z. z \ S" by simp -next - fix x y - assume "x \ S" and "y \ S" - hence "finite {x, y}" and "{x, y} \ S" by simp_all - hence "\z\S. {x, y} <| z" by (rule U) - thus "\z\S. x \ z \ y \ z" by simp -qed - -lemma directed_finiteD: - assumes S: "directed S" - shows "\finite U; U \ S\ \ \z\S. U <| z" -proof (induct U set: finite) - case empty - from S have "\z. z \ S" by (rule directedD1) - thus "\z\S. {} <| z" by simp -next - case (insert x F) - from `insert x F \ S` - have xS: "x \ S" and FS: "F \ S" by simp_all - from FS have "\y\S. F <| y" by fact - then obtain y where yS: "y \ S" and Fy: "F <| y" .. - obtain z where zS: "z \ S" and xz: "x \ z" and yz: "y \ z" - using S xS yS by (rule directedE2) - from Fy yz have "F <| z" by (rule is_ub_upward) - with xz have "insert x F <| z" by simp - with zS show "\z\S. insert x F <| z" .. -qed - -lemma not_directed_empty [simp]: "\ directed {}" - by (rule notI, drule directedD1, simp) - -lemma directed_singleton: "directed {x}" - by (rule directedI, auto) - -lemma directed_bin: "x \ y \ directed {x, y}" - by (rule directedI, auto) - -lemma directed_chain: "chain S \ directed (range S)" -apply (rule directedI) -apply (rule_tac x="S 0" in exI, simp) -apply (clarify, rename_tac m n) -apply (rule_tac x="S (max m n)" in bexI) -apply (simp add: chain_mono) -apply simp -done - text {* lemmata for improved admissibility introdution rule *} lemma infinite_chain_adm_lemma: