diff -r 324b148fc6b5 -r da0fccee125c Nominal/Ex/QuotientSet.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Nominal/Ex/QuotientSet.thy Sat Nov 26 09:53:52 2011 +0000 @@ -0,0 +1,91 @@ +theory QuotientSet +imports + "../Nominal2" +begin + +lemma supp_quot: + "(supp (R, x)) supports (R `` {x})" +unfolding supports_def +unfolding fresh_def[symmetric] +apply(perm_simp) +apply(simp add: swap_fresh_fresh) +done + +lemma + assumes "equiv UNIV R" + and "(x, y) \ R" + shows "R `` {x} = R `` {y}" +using assms +by (rule equiv_class_eq) + +lemma s1: + assumes "equiv UNIV R" + and "(x, y) \ R" + shows "a \ (R `` {x}) \ a \ (R `` {y})" +using assms +apply(subst equiv_class_eq) +apply(auto) +done + +lemma s2: + fixes x::"'a::fs" + assumes "equiv UNIV R" + and "supp R = {}" + shows "\{supp y | y. (x, y) \ R} supports (R `` {x})" +unfolding supports_def +apply(rule allI)+ +apply(rule impI) +apply(rule swap_fresh_fresh) +apply(drule conjunct1) +apply(auto)[1] +apply(subst s1) +apply(rule assms) +apply(assumption) +apply(rule supports_fresh) +apply(rule supp_quot) +apply(simp add: supp_Pair finite_supp assms) +apply(simp add: supp_Pair assms) +apply(drule conjunct2) +apply(auto)[1] +apply(subst s1) +apply(rule assms) +apply(assumption) +apply(rule supports_fresh) +apply(rule supp_quot) +apply(simp add: supp_Pair finite_supp assms) +apply(simp add: supp_Pair assms) +done + +lemma s3: + fixes S::"'a::fs set" + assumes "finite S" + and "S \ {}" + and "a \ S" + shows "\x \ S. a \ x" +using assms +apply(auto simp add: fresh_def) +apply(subst (asm) supp_of_finite_sets) +apply(auto) +done + +(* +lemma supp_inter: + fixes x::"'a::fs" + assumes "equiv UNIV R" + and "supp R = {}" + shows "supp (R `` {x}) = \{supp y | y. (x, y) \ R}" +apply(rule finite_supp_unique) +apply(rule s2) +apply(rule assms) +apply(rule assms) +apply(metis (lam_lifting, no_types) at_base_infinite finite_UNIV) +*) + + + + + +end + + +