Quot/Nominal/Abs.thy
changeset 1024 b3deb964ad26
parent 1021 bacf3584640e
child 1026 278253330b6a
equal deleted inserted replaced
1023:7c12f5476d1b 1024:b3deb964ad26
   127   apply(simp add: permute_eqvt[symmetric])
   127   apply(simp add: permute_eqvt[symmetric])
   128   apply(simp add: fresh_star_permute_iff)
   128   apply(simp add: fresh_star_permute_iff)
   129   apply(clarsimp)
   129   apply(clarsimp)
   130   done
   130   done
   131 
   131 
       
   132 lemma alpha_gen_atom_eqvt:
       
   133   assumes a: "\<And>x. pi \<bullet> (f x) = f (pi \<bullet> x)"
       
   134   and     b: "\<exists>pia. ({atom a}, t) \<approx>gen \<lambda>x1 x2. R x1 x2 \<and> R (pi \<bullet> x1) (pi \<bullet> x2) f pia ({atom b}, s)"
       
   135   shows  "\<exists>pia. ({atom (pi \<bullet> a)}, pi \<bullet> t) \<approx>gen R f pia ({atom (pi \<bullet> b)}, pi \<bullet> s)"
       
   136   using b apply -
       
   137   apply(erule exE)
       
   138   apply(rule_tac x="pi \<bullet> pia" in exI)
       
   139   apply(simp add: alpha_gen.simps)
       
   140   apply(erule conjE)+
       
   141   apply(rule conjI)+
       
   142   apply(rule_tac ?p1="- pi" in permute_eq_iff[THEN iffD1])
       
   143   apply(simp add: a[symmetric] atom_eqvt eqvts)
       
   144   apply(rule conjI)
       
   145   apply(rule_tac ?p1="- pi" in fresh_star_permute_iff[THEN iffD1])
       
   146   apply(simp add: a[symmetric] eqvts atom_eqvt)
       
   147   apply(subst permute_eqvt[symmetric])
       
   148   apply(simp)
       
   149   done
       
   150 
       
   151 
   132 fun
   152 fun
   133   alpha_abs 
   153   alpha_abs 
   134 where
   154 where
   135   "alpha_abs (bs, x) (cs, y) = (\<exists>p. (bs, x) \<approx>gen (op=) supp p (cs, y))"
   155   "alpha_abs (bs, x) (cs, y) = (\<exists>p. (bs, x) \<approx>gen (op=) supp p (cs, y))"
   136 
   156