# HG changeset patch # User haftmann # Date 1331152476 -3600 # Node ID 85619a872ab541379dfa24c07244df9e8c9a9f61 # Parent b1d15637381aedea9aaca58a40756735240b3b7f tuned syntax; more candidates diff -r b1d15637381a -r 85619a872ab5 src/HOL/Relation.thy --- a/src/HOL/Relation.thy Wed Mar 07 16:13:49 2012 +0100 +++ b/src/HOL/Relation.thy Wed Mar 07 21:34:36 2012 +0100 @@ -60,16 +60,16 @@ subsubsection {* Conversions between set and predicate relations *} -lemma pred_equals_eq [pred_set_conv]: "((\x. x \ R) = (\x. x \ S)) \ (R = S)" +lemma pred_equals_eq [pred_set_conv]: "(\x. x \ R) = (\x. x \ S) \ R = S" by (simp add: set_eq_iff fun_eq_iff) -lemma pred_equals_eq2 [pred_set_conv]: "((\x y. (x, y) \ R) = (\x y. (x, y) \ S)) \ (R = S)" +lemma pred_equals_eq2 [pred_set_conv]: "(\x y. (x, y) \ R) = (\x y. (x, y) \ S) \ R = S" by (simp add: set_eq_iff fun_eq_iff) -lemma pred_subset_eq [pred_set_conv]: "((\x. x \ R) \ (\x. x \ S)) \ (R \ S)" +lemma pred_subset_eq [pred_set_conv]: "(\x. x \ R) \ (\x. x \ S) \ R \ S" by (simp add: subset_iff le_fun_def) -lemma pred_subset_eq2 [pred_set_conv]: "((\x y. (x, y) \ R) \ (\x y. (x, y) \ S)) \ (R \ S)" +lemma pred_subset_eq2 [pred_set_conv]: "(\x y. (x, y) \ R) \ (\x y. (x, y) \ S) \ R \ S" by (simp add: subset_iff le_fun_def) lemma bot_empty_eq (* CANDIDATE [pred_set_conv] *): "\ = (\x. x \ {})" @@ -96,12 +96,54 @@ lemma sup_Un_eq2 [pred_set_conv]: "(\x y. (x, y) \ R) \ (\x y. (x, y) \ S) = (\x y. (x, y) \ R \ S)" by (simp add: sup_fun_def) +lemma Inf_INT_eq [pred_set_conv]: "\S = (\x. x \ INTER S Collect)" + by (simp add: fun_eq_iff Inf_apply) + +(* CANDIDATE +lemma INF_Int_eq [pred_set_conv]: "(\i\S. (\x. x \ i)) = (\x. x \ \S)" + by (simp add: fun_eq_iff INF_apply) + +lemma Inf_INT_eq2 [pred_set_conv]: "\S = (\x y. (x, y) \ INTER (prod_case ` S) Collect)" + by (simp add: fun_eq_iff Inf_apply INF_apply) + +lemma INF_Int_eq2 [pred_set_conv]: "(\i\S. (\x y. (x, y) \ i)) = (\x y. (x, y) \ \S)" + by (simp add: fun_eq_iff INF_apply) + +lemma Sup_SUP_eq [pred_set_conv]: "\S = (\x. x \ UNION S Collect)" + by (simp add: fun_eq_iff Sup_apply) + +lemma SUP_Sup_eq [pred_set_conv]: "(\i\S. (\x. x \ i)) = (\x. x \ \S)" + by (simp add: fun_eq_iff SUP_apply) + +lemma Sup_SUP_eq2 [pred_set_conv]: "\S = (\x y. (x, y) \ UNION (prod_case ` S) Collect)" + by (simp add: fun_eq_iff Sup_apply SUP_apply) + +lemma SUP_Sup_eq2 [pred_set_conv]: "(\i\S. (\x y. (x, y) \ i)) = (\x y. (x, y) \ \S)" + by (simp add: fun_eq_iff SUP_apply) +*) + +(* CANDIDATE prefer those generalized versions: +lemma INF_INT_eq [pred_set_conv]: "(\i\S. (\x. x \ r i)) = (\x. x \ (\i\S. r i))" + by (simp add: INF_apply fun_eq_iff) + +lemma INF_INT_eq2 [pred_set_conv]: "(\i\S. (\x y. (x, y) \ r i)) = (\x y. (x, y) \ (\i\S. r i))" + by (simp add: INF_apply fun_eq_iff) +*) + lemma INF_INT_eq (* CANDIDATE [pred_set_conv] *): "(\i. (\x. x \ r i)) = (\x. x \ (\i. r i))" by (simp add: INF_apply fun_eq_iff) lemma INF_INT_eq2 (* CANDIDATE [pred_set_conv] *): "(\i. (\x y. (x, y) \ r i)) = (\x y. (x, y) \ (\i. r i))" by (simp add: INF_apply fun_eq_iff) +(* CANDIDATE prefer those generalized versions: +lemma SUP_UN_eq [pred_set_conv]: "(\i\S. (\x. x \ r i)) = (\x. x \ (\i\S. r i))" + by (simp add: SUP_apply fun_eq_iff) + +lemma SUP_UN_eq2 [pred_set_conv]: "(\i\S. (\x y. (x, y) \ r i)) = (\x y. (x, y) \ (\i\S. r i))" + by (simp add: SUP_apply fun_eq_iff) +*) + lemma SUP_UN_eq [pred_set_conv]: "(\i. (\x. x \ r i)) = (\x. x \ (\i. r i))" by (simp add: SUP_apply fun_eq_iff)