# HG changeset patch # User desharna # Date 1654617213 -7200 # Node ID fd63dad2cbe122db2b148579004144a185f8cebc # Parent 31abccc97adef3d7ebe572da3a4546b2684ecf22# Parent f0dfcd8329d042793526122dbdf3e2286012fdd6 merged diff -r 31abccc97ade -r fd63dad2cbe1 NEWS --- a/NEWS Tue Jun 07 17:24:42 2022 +0200 +++ b/NEWS Tue Jun 07 17:53:33 2022 +0200 @@ -45,12 +45,19 @@ Lemma reflp_def is explicitly provided for backward compatibility but its usage is discouraged. Minor INCOMPATIBILITY. - Added predicate totalp_on and abbreviation totalp. + - Replaced HOL.implies by Pure.imp in lemma reflp_mono for consistency + with other lemmas. Minor INCOMPATIBILITY. - Added lemmas. preorder.asymp_greater preorder.asymp_less reflp_onD reflp_onI + reflp_on_Inf + reflp_on_Sup + reflp_on_inf + reflp_on_mono reflp_on_subset + reflp_on_sup total_on_subset totalpD totalpI diff -r 31abccc97ade -r fd63dad2cbe1 src/HOL/Relation.thy --- a/src/HOL/Relation.thy Tue Jun 07 17:24:42 2022 +0200 +++ b/src/HOL/Relation.thy Tue Jun 07 17:53:33 2022 +0200 @@ -206,21 +206,33 @@ lemma refl_on_Int: "refl_on A r \ refl_on B s \ refl_on (A \ B) (r \ s)" unfolding refl_on_def by blast +lemma reflp_on_inf: "reflp_on A R \ reflp_on B S \ reflp_on (A \ B) (R \ S)" + by (auto intro: reflp_onI dest: reflp_onD) + lemma reflp_inf: "reflp r \ reflp s \ reflp (r \ s)" - by (auto intro: reflpI elim: reflpE) + by (rule reflp_on_inf[of UNIV _ UNIV, unfolded Int_absorb]) lemma refl_on_Un: "refl_on A r \ refl_on B s \ refl_on (A \ B) (r \ s)" unfolding refl_on_def by blast +lemma reflp_on_sup: "reflp_on A R \ reflp_on B S \ reflp_on (A \ B) (R \ S)" + by (auto intro: reflp_onI dest: reflp_onD) + lemma reflp_sup: "reflp r \ reflp s \ reflp (r \ s)" - by (auto intro: reflpI elim: reflpE) + by (rule reflp_on_sup[of UNIV _ UNIV, unfolded Un_absorb]) lemma refl_on_INTER: "\x\S. refl_on (A x) (r x) \ refl_on (\(A ` S)) (\(r ` S))" unfolding refl_on_def by fast +lemma reflp_on_Inf: "\x\S. reflp_on (A x) (R x) \ reflp_on (\(A ` S)) (\(R ` S))" + by (auto intro: reflp_onI dest: reflp_onD) + lemma refl_on_UNION: "\x\S. refl_on (A x) (r x) \ refl_on (\(A ` S)) (\(r ` S))" unfolding refl_on_def by blast +lemma reflp_on_Sup: "\x\S. reflp_on (A x) (R x) \ reflp_on (\(A ` S)) (\(R ` S))" + by (auto intro: reflp_onI dest: reflp_onD) + lemma refl_on_empty [simp]: "refl_on {} {}" by (simp add: refl_on_def) @@ -234,8 +246,12 @@ lemma reflp_equality [simp]: "reflp (=)" by (simp add: reflp_def) -lemma reflp_mono: "reflp R \ (\x y. R x y \ Q x y) \ reflp Q" - by (auto intro: reflpI dest: reflpD) +lemma reflp_on_mono: + "reflp_on A R \ (\x y. x \ A \ y \ A \ R x y \ Q x y) \ reflp_on A Q" + by (auto intro: reflp_onI dest: reflp_onD) + +lemma reflp_mono: "reflp R \ (\x y. R x y \ Q x y) \ reflp Q" + by (rule reflp_on_mono[of UNIV R Q]) simp_all subsubsection \Irreflexivity\