added lemmas antisym_on_bot[simp], asym_on_bot[simp], irrefl_on_bot[simp], sym_on_bot[simp], trans_on_bot[simp]
--- a/NEWS Sun Mar 16 08:55:17 2025 +0100
+++ b/NEWS Sun Mar 16 14:51:37 2025 +0100
@@ -28,18 +28,23 @@
antisymp_equality[simp] ~> antisymp_on_equality[simp]
transp_equality[simp] ~> transp_on_equality[simp]
- Added lemmas.
+ antisym_on_bot[simp]
antisymp_on_bot[simp]
+ asym_on_bot[simp]
asymp_on_bot[simp]
+ irrefl_on_bot[simp]
irreflp_on_bot[simp]
left_unique_bot[simp]
left_unique_iff_Uniq
reflp_on_refl_on_eq[pred_set_conv]
+ sym_on_bot[simp]
symp_on_bot[simp]
symp_on_equality[simp]
totalp_on_mono[mono]
totalp_on_mono_strong
totalp_on_mono_stronger
totalp_on_mono_stronger_alt
+ trans_on_bot[simp]
transp_on_bot[simp]
* Theory "HOL.Wellfounded":
--- a/src/HOL/Relation.thy Sun Mar 16 08:55:17 2025 +0100
+++ b/src/HOL/Relation.thy Sun Mar 16 14:51:37 2025 +0100
@@ -316,8 +316,11 @@
lemma irreflpD: "irreflp R \<Longrightarrow> \<not> R x x"
by (rule irreflD[to_pred])
+lemma irrefl_on_bot[simp]: "irrefl_on A \<bottom>"
+ by (simp add: irrefl_on_def)
+
lemma irreflp_on_bot[simp]: "irreflp_on A \<bottom>"
- by (simp add: irreflp_on_def)
+ using irrefl_on_bot[to_pred] .
lemma irrefl_on_distinct [code]: "irrefl_on A r \<longleftrightarrow> (\<forall>(a, b) \<in> r. a \<in> A \<longrightarrow> b \<in> A \<longrightarrow> a \<noteq> b)"
by (auto simp add: irrefl_on_def)
@@ -385,8 +388,11 @@
lemma asympD: "asymp R \<Longrightarrow> R x y \<Longrightarrow> \<not> R y x"
by (rule asymD[to_pred])
+lemma asym_on_bot[simp]: "asym_on A \<bottom>"
+ by (simp add: asym_on_def)
+
lemma asymp_on_bot[simp]: "asymp_on A \<bottom>"
- by (simp add: asymp_on_def)
+ using asym_on_bot[to_pred] .
lemma asym_iff: "asym r \<longleftrightarrow> (\<forall>x y. (x,y) \<in> r \<longrightarrow> (y,x) \<notin> r)"
by (blast dest: asymD)
@@ -440,8 +446,11 @@
lemmas symp_sym_eq = symp_on_sym_on_eq[of UNIV] \<comment> \<open>For backward compatibility\<close>
+lemma sym_on_bot[simp]: "sym_on A \<bottom>"
+ by (simp add: sym_on_def)
+
lemma symp_on_bot[simp]: "symp_on A \<bottom>"
- by (simp add: symp_on_def)
+ using sym_on_bot[to_pred] .
lemma sym_on_subset: "sym_on A r \<Longrightarrow> B \<subseteq> A \<Longrightarrow> sym_on B r"
by (auto simp: sym_on_def)
@@ -542,8 +551,11 @@
lemmas antisymp_antisym_eq = antisymp_on_antisym_on_eq[of UNIV] \<comment> \<open>For backward compatibility\<close>
+lemma antisym_on_bot[simp]: "antisym_on A \<bottom>"
+ by (simp add: antisym_on_def)
+
lemma antisymp_on_bot[simp]: "antisymp_on A \<bottom>"
- by (simp add: antisymp_on_def)
+ using antisym_on_bot[to_pred] .
lemma antisym_on_subset: "antisym_on A r \<Longrightarrow> B \<subseteq> A \<Longrightarrow> antisym_on B r"
by (auto simp: antisym_on_def)
@@ -598,11 +610,11 @@
lemma antisym_empty [simp]:
"antisym {}"
- unfolding antisym_def by blast
+ using antisym_on_bot .
lemma antisym_bot [simp]:
"antisymp \<bottom>"
- by (fact antisym_empty [to_pred])
+ using antisymp_on_bot .
lemma antisymp_on_equality[simp]: "antisymp_on A (=)"
by (auto intro: antisymp_onI)
@@ -732,11 +744,14 @@
lemma transp_on_equality[simp]: "transp_on A (=)"
by (auto intro: transp_onI)
+lemma trans_on_bot[simp]: "trans_on A \<bottom>"
+ by (simp add: trans_on_def)
+
lemma trans_empty [simp]: "trans {}"
- by (blast intro: transI)
+ using trans_on_bot .
lemma transp_on_bot[simp]: "transp_on A \<bottom>"
- by (simp add: transp_on_def)
+ using trans_on_bot[to_pred] .
lemma transp_empty [simp]: "transp (\<lambda>x y. False)"
using transp_on_bot unfolding bot_fun_def bot_bool_def .