diff -r d1293d30c657 -r aa999d263b10 Nominal/Abs.thy --- a/Nominal/Abs.thy Fri Mar 26 17:22:17 2010 +0100 +++ b/Nominal/Abs.thy Fri Mar 26 22:22:41 2010 +0100 @@ -587,24 +587,36 @@ by (simp_all add: fresh_zero_perm) lemma alpha_gen_sym: - assumes a: "R (p \ x) y \ R (- p \ y) x" + assumes a: "R (p \ x) y \ R y (p \ x)" + and b: "\x y p. R x y \ R (p \ x) (p \ y)" shows "(bs, x) \gen R f p (cs, y) \ (cs, y) \gen R f (- p) (bs, x)" and "(bs, x) \res R f p (cs, y) \ (cs, y) \res R f (- p) (bs, x)" and "(ds, x) \lst R f p (es, y) \ (es, y) \lst R f (- p) (ds, x)" + unfolding alphas fresh_star_def + apply (erule_tac [1] conjE)+ + apply (erule_tac [2] conjE)+ + apply (erule_tac [3] conjE)+ using a - unfolding alphas - unfolding fresh_star_def - by (auto simp add: fresh_minus_perm) - + apply (simp_all add: fresh_minus_perm) + apply (rotate_tac [!] -1) + apply (drule_tac [!] p="-p" in b) + apply (simp_all) + apply (metis permute_minus_cancel(2)) + apply (metis permute_minus_cancel(2)) + done lemma alpha_gen_trans: - assumes a: "\R (p \ x) y; R (q \ y) z\ \ R ((q + p) \ x) z" + assumes a: "(\c. R y c \ R (p \ x) c)" + and b: "R (p \ x) y" + and c: "R (q \ y) z" + and d: "\x y p. R x y \ R (p \ x) (p \ y)" shows "\(bs, x) \gen R f p (cs, y); (cs, y) \gen R f q (ds, z)\ \ (bs, x) \gen R f (q + p) (ds, z)" and "\(bs, x) \res R f p (cs, y); (cs, y) \res R f q (ds, z)\ \ (bs, x) \res R f (q + p) (ds, z)" and "\(es, x) \lst R f p (gs, y); (gs, y) \lst R f q (hs, z)\ \ (es, x) \lst R f (q + p) (hs, z)" - using a unfolding alphas unfolding fresh_star_def - by (simp_all add: fresh_plus_perm) + apply (simp_all add: fresh_plus_perm) + apply (metis a c d permute_minus_cancel(2))+ + done lemma alpha_gen_eqvt: assumes a: "R (q \ x) y \ R (p \ (q \ x)) (p \ y)"