diff -r 6c5e3ac737d9 -r 77eccce38a17 Nominal/Abs.thy --- a/Nominal/Abs.thy Wed Apr 21 19:10:55 2010 +0200 +++ b/Nominal/Abs.thy Wed Apr 21 19:11:51 2010 +0200 @@ -397,150 +397,6 @@ section {* BELOW is stuff that may or may not be needed *} -lemma - fixes t1 s1::"'a::fs" - and t2 s2::"'b::fs" - shows "Abs as (t1, t2) = Abs as (s1, s2) \ (Abs as t1 = Abs as s1 \ Abs as t2 = Abs as s2)" -apply(subst abs_eq_iff) -apply(subst alphas_abs) -apply(subst alphas) -apply(rule impI) -apply(erule exE) -apply(simp add: supp_Pair) -apply(simp add: Un_Diff) -apply(simp add: fresh_star_union) -apply(erule conjE)+ -apply(rule conjI) -apply(rule trans) -apply(rule sym) -apply(rule_tac p="p" in supp_perm_eq) -apply(simp add: supp_abs) -apply(simp) -apply(rule trans) -apply(rule sym) -apply(rule_tac p="p" in supp_perm_eq) -apply(simp add: supp_abs) -apply(simp) -done - -lemma - fixes t1 s1::"'a::fs" - and t2 s2::"'b::fs" - shows "Abs as (t1, t2) = Abs bs (s1, s2) \ (Abs as t1 = Abs bs s1 \ Abs as t2 = Abs bs s2)" -apply(subst abs_eq_iff) -apply(subst alphas_abs) -apply(subst alphas) -apply(rule impI) -apply(erule exE) -apply(simp add: supp_Pair) -apply(simp add: Un_Diff) -apply(simp add: fresh_star_union) -apply(erule conjE)+ -apply(rule conjI) -apply(rule trans) -apply(rule sym) -apply(rule_tac p="p" in supp_perm_eq) -apply(simp add: supp_abs) -apply(simp) -apply(rule trans) -apply(rule sym) -apply(rule_tac p="p" in supp_perm_eq) -apply(simp add: supp_abs) -apply(simp) -done - -lemma fresh_star_eq: - assumes a: "as \* p" - shows "\a \ as. p \ a = a" -using a by (simp add: fresh_star_def fresh_def supp_perm) - -lemma fresh_star_set_eq: - assumes a: "as \* p" - shows "p \ as = as" -using a -apply(simp add: fresh_star_def fresh_def supp_perm permute_set_eq) -apply(auto) -by (metis permute_atom_def) - -lemma - fixes t1 s1::"'a::fs" - and t2 s2::"'b::fs" - shows "Abs as t1 = Abs bs s1 \ Abs (as \ cs) t1 = Abs (bs \ cs) s1" -apply(subst abs_eq_iff) -apply(subst abs_eq_iff) -apply(subst alphas_abs) -apply(subst alphas_abs) -apply(subst alphas) -apply(subst alphas) -apply(rule impI) -apply(erule exE | erule conjE)+ -apply(rule_tac x="p" in exI) -apply(simp) -apply(rule conjI) -apply(auto)[1] -apply(rule conjI) -apply(auto)[1] -apply(simp add: fresh_star_def) -apply(auto)[1] -apply(simp add: union_eqvt) -oops - - -lemma - fixes t1 s1::"'a::fs" - and t2 s2::"'b::fs" - shows "(Abs as t1 = Abs bs s1 \ Abs as t2 = Abs bs s2) \ Abs as (t1, t2) = Abs bs (s1, s2)" -apply(subst abs_eq_iff) -apply(subst abs_eq_iff) -apply(subst alphas_abs) -apply(subst alphas_abs) -apply(subst alphas) -apply(subst alphas) -apply(rule impI) -apply(erule exE | erule conjE)+ -apply(simp add: abs_eq_iff) -apply(simp add: alphas_abs) -apply(simp add: alphas) -apply(rule conjI) -apply(simp add: supp_Pair Un_Diff) -oops - - - -(* support of concrete atom sets *) - -lemma - shows "Abs as t = Abs (supp t \ as) t" -apply(simp add: abs_eq_iff) -apply(simp add: alphas_abs) -apply(rule_tac x="0" in exI) -apply(simp add: alphas) -apply(auto) -oops - -lemma - assumes "finite S" - shows "\q. supp q \ S \ p \ S \ (\a \ S. q \ a = p \ a)" -using assms -apply(induct) -apply(rule_tac x="0" in exI) -apply(simp add: supp_zero_perm) -apply(auto) -apply(simp add: insert_eqvt) -apply(rule_tac x="((p \ x) \ x) + q" in exI) -apply(rule conjI) -apply(rule subset_trans) -apply(rule supp_plus_perm) -apply(simp add: supp_swap) -apply(auto)[1] -apply(simp) -apply(rule conjI) -apply(case_tac "q \ x = x") -apply(simp) -apply(simp add: supp_perm) -apply(case_tac "x \ p \ F") -sorry - lemma supp_atom_image: fixes as::"'a::at_base set"