src/HOL/Lifting.thy
changeset 47376 776254f89a18
parent 47369 f483be2fecb9
child 47436 d8fad618a67a
--- a/src/HOL/Lifting.thy	Thu Apr 05 15:23:26 2012 +0200
+++ b/src/HOL/Lifting.thy	Thu Apr 05 15:59:25 2012 +0200
@@ -297,6 +297,31 @@
   show "transp (invariant P)" by (auto intro: transpI simp: invariant_def)
 qed
 
+text {* Generating transfer rules for quotients. *}
+
+lemma Quotient_right_unique:
+  assumes "Quotient R Abs Rep T" shows "right_unique T"
+  using assms unfolding Quotient_alt_def right_unique_def by metis
+
+lemma Quotient_right_total:
+  assumes "Quotient R Abs Rep T" shows "right_total T"
+  using assms unfolding Quotient_alt_def right_total_def by metis
+
+lemma Quotient_rel_eq_transfer:
+  assumes "Quotient R Abs Rep T"
+  shows "(T ===> T ===> op =) R (op =)"
+  using assms unfolding Quotient_alt_def fun_rel_def by simp
+
+lemma Quotient_bi_total:
+  assumes "Quotient R Abs Rep T" and "reflp R"
+  shows "bi_total T"
+  using assms unfolding Quotient_alt_def bi_total_def reflp_def by auto
+
+lemma Quotient_id_abs_transfer:
+  assumes "Quotient R Abs Rep T" and "reflp R"
+  shows "(op = ===> T) (\<lambda>x. x) Abs"
+  using assms unfolding Quotient_alt_def reflp_def fun_rel_def by simp
+
 text {* Generating transfer rules for a type defined with @{text "typedef"}. *}
 
 lemma typedef_bi_unique: