diff -r c09598a97436 -r d8d85a8172b5 src/HOL/Complete_Partial_Order.thy --- a/src/HOL/Complete_Partial_Order.thy Sat Jul 18 21:44:18 2015 +0200 +++ b/src/HOL/Complete_Partial_Order.thy Sat Jul 18 22:58:50 2015 +0200 @@ -3,15 +3,15 @@ Author: Alexander Krauss, TU Muenchen *) -section {* Chain-complete partial orders and their fixpoints *} +section \Chain-complete partial orders and their fixpoints\ theory Complete_Partial_Order imports Product_Type begin -subsection {* Monotone functions *} +subsection \Monotone functions\ -text {* Dictionary-passing version of @{const Orderings.mono}. *} +text \Dictionary-passing version of @{const Orderings.mono}.\ definition monotone :: "('a \ 'a \ bool) \ ('b \ 'b \ bool) \ ('a \ 'b) \ bool" where "monotone orda ordb f \ (\x y. orda x y \ ordb (f x) (f y))" @@ -24,11 +24,11 @@ unfolding monotone_def by iprover -subsection {* Chains *} +subsection \Chains\ -text {* A chain is a totally-ordered set. Chains are parameterized over +text \A chain is a totally-ordered set. Chains are parameterized over the order for maximal flexibility, since type classes are not enough. -*} +\ definition chain :: "('a \ 'a \ bool) \ 'a set \ bool" @@ -67,12 +67,12 @@ shows "chain le_b (f ` Y)" by(blast intro: chainI dest: chainD[OF chain] mono) -subsection {* Chain-complete partial orders *} +subsection \Chain-complete partial orders\ -text {* +text \ A ccpo has a least upper bound for any chain. In particular, the empty set is a chain, so every ccpo must have a bottom element. -*} +\ class ccpo = order + Sup + assumes ccpo_Sup_upper: "\chain (op \) A; x \ A\ \ x \ Sup A" @@ -85,7 +85,7 @@ lemma ccpo_Sup_singleton [simp]: "\{x} = x" by(rule antisym)(auto intro: ccpo_Sup_least ccpo_Sup_upper simp add: chain_singleton) -subsection {* Transfinite iteration of a function *} +subsection \Transfinite iteration of a function\ inductive_set iterates :: "('a \ 'a) \ 'a set" for f :: "'a \ 'a" @@ -145,7 +145,7 @@ lemma bot_in_iterates: "Sup {} \ iterates f" by(auto intro: iterates.Sup simp add: chain_empty) -subsection {* Fixpoint combinator *} +subsection \Fixpoint combinator\ definition fixp :: "('a \ 'a) \ 'a" @@ -183,9 +183,9 @@ end -subsection {* Fixpoint induction *} +subsection \Fixpoint induction\ -setup {* Sign.map_naming (Name_Space.mandatory_path "ccpo") *} +setup \Sign.map_naming (Name_Space.mandatory_path "ccpo")\ definition admissible :: "('a set \ 'a) \ ('a \ 'a \ bool) \ ('a \ bool) \ bool" where "admissible lub ord P = (\A. chain ord A \ (A \ {}) \ (\x\A. P x) \ P (lub A))" @@ -203,7 +203,7 @@ shows "P (lub A)" using assms by (auto simp: ccpo.admissible_def) -setup {* Sign.map_naming Name_Space.parent_path *} +setup \Sign.map_naming Name_Space.parent_path\ lemma (in ccpo) fixp_induct: assumes adm: "ccpo.admissible Sup (op \) P"