# HG changeset patch # User huffman # Date 1110237301 -3600 # Node ID 17f4f5afcd5faf039852184c37455bfe97ce04bf # Parent 69bea57212efb71e42b93300f4287b7f8120a76a added subsection headings, cleaned up some proofs diff -r 69bea57212ef -r 17f4f5afcd5f src/HOLCF/Discrete.thy --- a/src/HOLCF/Discrete.thy Tue Mar 08 00:11:49 2005 +0100 +++ b/src/HOLCF/Discrete.thy Tue Mar 08 00:15:01 2005 +0100 @@ -14,6 +14,8 @@ datatype 'a discr = Discr "'a :: type" +subsection {* Type @{typ "'a discr"} is a partial order *} + instance discr :: (type) sq_ord .. defs (overloaded) @@ -32,6 +34,8 @@ { assume "x << y" and "y << z" thus "x << z" by simp } qed +subsection {* Type @{typ "'a discr"} is a cpo *} + lemma discr_chain0: "!!S::nat=>('a::type)discr. chain S ==> S i = S 0" apply (unfold chain_def) @@ -54,26 +58,25 @@ apply (simp (no_asm_simp)) done -instance discr :: (type)cpo -by (intro_classes, rule discr_cpo) +instance discr :: (type) cpo +by intro_classes (rule discr_cpo) + +subsection {* @{term undiscr} *} constdefs undiscr :: "('a::type)discr => 'a" "undiscr x == (case x of Discr y => y)" lemma undiscr_Discr [simp]: "undiscr(Discr x) = x" -apply (unfold undiscr_def) -apply (simp (no_asm)) -done +by (simp add: undiscr_def) lemma discr_chain_f_range0: "!!S::nat=>('a::type)discr. chain(S) ==> range(%i. f(S i)) = {f(S 0)}" -apply (fast dest: discr_chain0 elim: arg_cong) -done +by (fast dest: discr_chain0 elim: arg_cong) lemma cont_discr [iff]: "cont(%x::('a::type)discr. f x)" apply (unfold cont is_lub_def is_ub_def) -apply (simp (no_asm) add: discr_chain_f_range0) +apply (simp add: discr_chain_f_range0) done end