# HG changeset patch # User desharna # Date 1655811546 -7200 # Node ID 6fb4a0829cc41bb03e7cef4075a6e244147bdd17 # Parent d32201f08e98721aa8fbceafe285d25c56ee4d7d added predicate monotone_on and redefined monotone to be an abbreviation. diff -r d32201f08e98 -r 6fb4a0829cc4 NEWS --- a/NEWS Mon Jun 20 11:06:33 2022 +0200 +++ b/NEWS Tue Jun 21 13:39:06 2022 +0200 @@ -40,8 +40,16 @@ * Theory "HOL.Bit_Operations": rule bit_0 is not default [simp] any longer. INCOMPATIBILITY. +* Theory "HOL.Fun": + - Added predicate monotone_on and redefined monotone to be an + abbreviation. Lemma monotone_def is explicitly provided for backward + compatibility but its usage is discouraged. Minor INCOMPATIBILITY. + - Added lemmas. + monotone_onD + monotone_onI + * Theory "HOL.Relation": - - Added predicate reflp_on and redefined reflp to ab an abbreviation. + - Added predicate reflp_on and redefined reflp to be an abbreviation. Lemma reflp_def is explicitly provided for backward compatibility but its usage is discouraged. Minor INCOMPATIBILITY. - Added predicate totalp_on and abbreviation totalp. diff -r d32201f08e98 -r 6fb4a0829cc4 src/HOL/Fun.thy --- a/src/HOL/Fun.thy Mon Jun 20 11:06:33 2022 +0200 +++ b/src/HOL/Fun.thy Tue Jun 21 13:39:06 2022 +0200 @@ -927,8 +927,34 @@ then show False by blast qed + subsection \Monotonic functions over a set\ +definition monotone_on :: "'a set \ ('a \ 'a \ bool) \ ('b \ 'b \ bool) \ ('a \ 'b) \ bool" + where "monotone_on A orda ordb f \ (\x\A. \y\A. orda x y \ ordb (f x) (f y))" + +abbreviation monotone :: "('a \ 'a \ bool) \ ('b \ 'b \ bool) \ ('a \ 'b) \ bool" + where "monotone \ monotone_on UNIV" + +lemma monotone_def[no_atp]: "monotone orda ordb f \ (\x y. orda x y \ ordb (f x) (f y))" + by (simp add: monotone_on_def) + +text \Lemma @{thm [source] monotone_def} is provided for backward compatibility.\ + +lemma monotone_onI: + "(\x y. x \ A \ y \ A \ orda x y \ ordb (f x) (f y)) \ monotone_on A orda ordb f" + by (simp add: monotone_on_def) + +lemma monotoneI[intro?]: "(\x y. orda x y \ ordb (f x) (f y)) \ monotone orda ordb f" + by (rule monotone_onI) + +lemma monotone_onD: + "monotone_on A orda ordb f \ x \ A \ y \ A \ orda x y \ ordb (f x) (f y)" + by (simp add: monotone_on_def) + +lemma monotoneD[dest?]: "monotone orda ordb f \ orda x y \ ordb (f x) (f y)" + by (simp add: monotone_onD) + definition "mono_on f A \ \r s. r \ A \ s \ A \ r \ s \ f r \ f s" lemma mono_onI: diff -r d32201f08e98 -r 6fb4a0829cc4 src/HOL/Library/Complete_Partial_Order2.thy --- a/src/HOL/Library/Complete_Partial_Order2.thy Mon Jun 20 11:06:33 2022 +0200 +++ b/src/HOL/Library/Complete_Partial_Order2.thy Tue Jun 21 13:39:06 2022 +0200 @@ -373,9 +373,9 @@ | NONE => NONE in case Thm.term_of ct of - t as Const (\<^const_name>\ccpo.admissible\, _) $ _ $ _ $ _ => mk_thm t - | t as Const (\<^const_name>\mcont\, _) $ _ $ _ $ _ $ _ $ _ => mk_thm t - | t as Const (\<^const_name>\monotone\, _) $ _ $ _ $ _ => mk_thm t + t as \<^Const_>\ccpo.admissible _ for _ _ _\ => mk_thm t + | t as \<^Const_>\mcont _ _ for _ _ _ _ _\ => mk_thm t + | t as \<^Const_>\monotone_on _ _ for \<^Const_>\Orderings.top _\ _ _ _\ => mk_thm t | _ => NONE end handle THM _ => NONE diff -r d32201f08e98 -r 6fb4a0829cc4 src/HOL/Orderings.thy --- a/src/HOL/Orderings.thy Mon Jun 20 11:06:33 2022 +0200 +++ b/src/HOL/Orderings.thy Tue Jun 21 13:39:06 2022 +0200 @@ -1060,15 +1060,6 @@ subsection \Monotonicity\ -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))" - -lemma monotoneI[intro?]: "(\x y. orda x y \ ordb (f x) (f y)) \ monotone orda ordb f" - unfolding monotone_def by iprover - -lemma monotoneD[dest?]: "monotone orda ordb f \ orda x y \ ordb (f x) (f y)" - unfolding monotone_def by iprover - context order begin